自动采集文章文章(《​​》b站弹幕的爬取方法,只需一步操作) -足球即时指数

优采云采集器 发布时间: 2022-03-22 20:29

  自动采集文章文章(《​​》b站弹幕的爬取方法,只需一步操作)

  大家好,我是小张!

  《​​》文章中简单介绍了爬取b站弹幕的方法。只需在视频中找到参数cid,即可采集到视频下的所有弹幕;虽然思路很简单,但是个人觉得还是挺麻烦的。比如某天想在b站采集某视频弹幕,还需要从头开始:找cid参数,写代码等;

  所以我想知道是否有可能一步完成。以后你采集视频弹幕的时候,只需要做一步,比如输入你要爬的视频链接,程序就可以自动识别下载

  达到效果

  基于此,我借助pyqt5写了一个小工具,只需提供目标视频的url和目标txt路径,程序会自动采集视频下的弹幕并将数据保存到目标txt文本,先看看预览效果:

  ps微信公众号有*敏*感*词*帧数限制。我做*敏*感*词*的时候删掉了一部分内容,所以效果可能不流畅。

  工具实现分为ui界面和数据采集两部分,使用的python库:

  import requests
import re
from pyqt5.qtwidgets import *
from pyqt5 import qtcore
from pyqt5.qtgui import *
from pyqt5.qtcore import qthread, pyqtsignal
from bs4 import beautifulsoup

  用户界面界面

  ui界面使用pyqt5放置两个按钮(开始下载,保存到),进入视频链接的editline控件和调试窗口;

  代码显示如下:

  def __init__(self,parent =none):
super(ui_from,self).__init__(parent=parent)
self.setwindowtitle("b站弹幕采集")
self.setwindowicon(qicon('pic.jpg'))# 图标
self.top_label = qlabel("作者:小张\n 微信公号:小张python")
self.top_label.setalignment(qtcore.qt.alignhcenter)
self.top_label.setstylesheet('color:red;font-weight:bold;')
self.label = qlabel("b站视频url")
self.label.setalignment(qtcore.qt.alignhcenter)
self.editline1 = qlineedit()
self.pushbutton = qpushbutton("开始下载")
self.pushbutton.setenabled(false)#关闭启动
self.console = qlistwidget()
self.savebutton = qpushbutton("保存至")
self.layout = qgridlayout()
self.layout.addwidget(self.top_label,0,0,1,2)
self.layout.addwidget(self.label,1,0)
self.layout.addwidget(self.editline1,1,1)
self.layout.addwidget(self.pushbutton,2,0)
self.layout.addwidget(self.savebutton,3,0)
self.layout.addwidget(self.console,2,1,3,1)
self.setlayout(self.layout)
self.savepath = none

self.pushbutton.clicked.connect(self.downbutton)
self.savebutton.clicked.connect(self.savepushbutton)

self.editline1.textchanged.connect(self.syns_lineedit)

  当url不为空且已设置目标文本存储路径时,可进入数据采集模块

  实现此功能的代码:

  def syns_lineedit(self):
if self.editline1.text():
self.pushbutton.setenabled(true)#打开按钮

def savepushbutton(self):
savepath = qfiledialog.getsavefilename(self,'save path','/','txt(*.txt)')
if savepath[0]:# 选中 txt 文件路径
self.savepath = str(savepath[0])#进行赋值

  数据采集

  程序获取到url后,第一步是访问url提取当前页面视频的cid参数(一串数字)

  使用cid参数构造存储视频弹幕的api接口,然后使用正则requests和bs4包实现text采集

  数据采集部分代码:

  f = open(self.savepath, 'w ', encoding='utf-8') # 打开 txt 文件
res = requests.get(url)
res.encoding = 'utf-8'
soup = beautifulsoup(res.text, 'lxml')
items = soup.find_all('d') # 找到 d 标签

for item in items:
text = item.text
f.write(text)
f.write('\n')
f.close()

  cid 参数不在常规 html 标记上。提取时,我选择重新正则匹配;但是这一步会消耗更多的内存。为了减少对ui界面响应速度的影响,这一步由单独的线程来实现

  class parsetext(qthread):
trigger = pyqtsignal(str) # 信号发射;
def __init__(self,text,parent = none):
super(parsetext,self).__init__()
self.text = text
def __del__(self):
self.wait()
def run(self):
print('解析 -----------{}'.format(self.text))
result_url = re.findall('.*?"baseurl":"(.*?)","base_url".*?', self.text)[0]
self.trigger.emit(result_url)

  概括

  好了,以上就是本文的全部内容文章,希望内容对你的工作或学习有所帮助。

  最后感谢大家的阅读,下期再见~

  源码获取

  本文使用的源码文章,可以关注微信公众号小张python,后台回复关键字210217即可获取!

  ​​​

  我觉得文章不错,分享给更多人吧~

  ~

       优采云采集器是一个根据用户提供的关键词,云端自动采集相关文章并发布到用户网站的网站采集器。它能够自动识别各种网页上的标题、正文等信息,不需要用户编写任何采集规则就可以实现全网采集。采集到内容后,会自动计算内容与所设定的关键词的相关度,只把相关的文章推送给用户。支持标题前缀、关键词自动加粗、插入固定链接、自动提取tag标签、自动内链、自动配图、自动伪原创、内容过滤和替换、电话号码和网址清理、定时采集、百度主动提交等一系列seo功能。用户只需设置好关键词和相关需求,就能实现全托管、零维护的网站内容更新。不限网站数量,不管是单个网站还是大批量站群,都可以非常方便的进行管理。

2022-03-22

0 个评论

要回复文章请先登录注册


官方客服qq群


线