最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python編程實現下載器自動爬取采集B站彈幕示例

 更新時間:2021年10月08日 14:13:55   作者:小張Python  
這篇文章主要介紹了使用Python編程來實現一個下載器可以自動爬取采集B站彈幕的示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

大家好,我是小張!

在《Python編程實現小姐姐跳舞并生成詞云視頻示例》文章中簡單介紹了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界面

UI 界面借助了 PyQt5,放置了了兩個按鈕(開始下載、保存至),輸入視頻鏈接 的 editline 控件及調試窗口;

image-20210217185155009

代碼如下:

    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 不為空以及目標文本存放路徑已經設置好之后,才能進入數據采集模塊

效果12

實現此功能的代碼:

 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 參數(一連串數字)

image-20210217194745469

利用cid 參數構造該存放該視頻彈幕的 API 接口,隨后用常規(guī) requests 和 bs4 包實現文本采集

image-20210217195252765

數據采集部分代碼:

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 參數 并不是位于常規(guī) html 的標簽上,提取時我選擇 re 正則匹配;但這一步驟比較耗機子內存,為了減少對UI界面響應速度的影響,這一步驟單獨用一個線程來實現

class Parsetext(QThread):
    trigger = pyqtSignal(str) # 信號發(fā)射;
    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編程實現下載器自動采集B站彈幕示例的詳細內容,更多關于Python實現自動爬取的資料請關注腳本之家其它相關文章!

相關文章

  • Python使用tkinter實現小時鐘效果

    Python使用tkinter實現小時鐘效果

    這篇文章主要為大家詳細介紹了Python使用tkinter實現小時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • django 多數據庫及分庫實現方式

    django 多數據庫及分庫實現方式

    這篇文章主要介紹了django 多數據庫及分庫實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python實現自動運行代碼的方法詳解

    Python實現自動運行代碼的方法詳解

    在軟件開發(fā)和數據科學領域,自動運行代碼是提高效率和確保一致性的關鍵,本文將深入探討如何使用Python實現自動運行代碼的各種方法,希望對大家有所幫助
    2023-12-12
  • python單星號(*)與雙星號(**)使用示例demo

    python單星號(*)與雙星號(**)使用示例demo

    這篇文章詳細介紹了Python中*與**操作符的使用場景及注意事項,并通過示例代碼展示了它們在函數形參和實參、序列解包以及函數參數順序中的應用,需要的朋友可以參考下
    2024-12-12
  • Python實現快速提取PDF文檔中的圖片

    Python實現快速提取PDF文檔中的圖片

    提取PDF文檔中的圖片是一項常見的任務,本文將介紹如何使用PyPDF2和pdfminer.six這兩個庫來提取PDF文檔中的圖片,感興趣的可以了解一下
    2023-06-06
  • 正確理解python中的關鍵字“with”與上下文管理器

    正確理解python中的關鍵字“with”與上下文管理器

    這篇文章主要介紹了關于python中關鍵字"with"和上下文管理器的相關資料,文中介紹的非常詳細,相信對大家學習或者使用python具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • web自動化測試Selenium點擊元素的常用方法

    web自動化測試Selenium點擊元素的常用方法

    在Web自動化測試中,Selenium提供多種點擊方法,常用的click()方法通過選中元素并觸發(fā)點擊事件,若click()方法不穩(wěn)定,可以采用JavaScript執(zhí)行點擊或使用ActionChains類模擬鼠標點擊,需要的朋友可以參考下
    2024-09-09
  • Python中如何調用系統(tǒng)命令和進程

    Python中如何調用系統(tǒng)命令和進程

    在Python編程中,subprocess庫是一個功能強大的工具,本文將詳細介紹subprocess庫的功能和應用場景,并通過代碼示例進行說明,需要的可以了解下
    2025-02-02
  • padas 生成excel 增加sheet表的實例

    padas 生成excel 增加sheet表的實例

    今天小編就為大家分享一篇padas 生成excel 增加sheet表的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python繪制浪漫星空的示例代碼

    Python繪制浪漫星空的示例代碼

    Python的turtle是一個基于tkinter的Python圖形庫,可以幫助初學者輕松地理解和繪制圖形,本文就來通過turtle繪制一個浪漫的星空動畫吧
    2023-09-09

最新評論

安庆市| 慈利县| 且末县| 恩平市| 那曲县| 苍南县| 秭归县| 元朗区| 招远市| 克拉玛依市| 天祝| 郎溪县| 鄢陵县| 湘潭县| 余干县| 永寿县| 沧州市| 静海县| 渭南市| 洪湖市| 大渡口区| 民勤县| 双柏县| 周至县| 弥勒县| 诸城市| 井陉县| 巴东县| 扶绥县| 轮台县| 济南市| 交城县| 清远市| 凉山| 色达县| 封开县| 元江| 凭祥市| 寻甸| 庄河市| 连江县|