亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析

 更新時間:2020年12月01日 10:39:20   作者:Ericam_  
這篇文章主要介紹了python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

最近需要大規(guī)模下載B站視頻,同時要將下載好的視頻用BV號進行重命名,最后上傳至服務器。這個工作一開始我是完全手工完成的,通過游猴來下載,可是下載幾十個視頻還好,再多一點的話真是太煩了,而且生產(chǎn)力低下,因此誕生了編寫腳本的想法。
一開始我需要在B站搜索關鍵詞,然后不斷點開視頻后進行下載,同時在視頻下載后還需要找到這個視頻來修改BV號,效率實在太低,特別是當下載的視頻多了,再返回來尋找它對應的BV號時也是個很繁瑣的過程,因此決定進行編寫python腳本。
本次的腳本可以大幅度提高工作效率,但是它并不是全自動完成任務的,畢竟我們用到了Bilibili唧唧。(唧唧真的很好用,其實也可以完全做成全自動,但我覺得沒什么必要了,效率已經(jīng)很高啦~)
大家如果還有什么更好的建議歡迎評論告訴我。
最后,給個贊吧,親~

概述

簡要介紹一下工作流程:
(1)通過爬蟲爬取一堆視頻BV號,存放于txt文件中,如下所示:

在這里插入圖片描述

(2)不斷復制BV號,唧唧便會自動進行下載視頻

(3)通過腳本將下載好的視頻一鍵化改名

在這里插入圖片描述

正文

爬蟲部分

1.依賴庫

requestsl

xml

2.代碼
相關講解已在注釋標注。

'''
author:Ericam
description: 用于爬取b站視頻鏈接
'''
import requests
import re
from lxml import etree
import time

'''
該函數(shù)用于解析爬取的網(wǎng)頁。
提取出網(wǎng)頁里視頻的url鏈接以及對應的視頻名。
'''
def getHref(url,page):
 try:
 req = requests.get(url,timeout=5,headers=headers)
 html = req.text
 data = etree.HTML(html)
 '''
 page-1://*[@id="all-list"]/div[1]/div[2]/ul[@class="video-list"]/li
 other://*[@id="all-list"]/div[1]/ul[@class="video-list"]/li
 '''
 pattern = '//*[@id="all-list"]/div[1]/div[2]/ul[contains(@class,"video-list")]/li' if page == 1 else '//*[@id="all-list"]/div[1]/ul[contains(@class,"video-list")]/li'
 vurlList = data.xpath(pattern)
 for li in vurlList:
  vurl = li.xpath(".//a/attribute::href")[0]
  title = li.xpath(".//a/attribute::title")[0]
  yield vurl,title
 except:
 print('第%d頁爬取失敗' % page)
 print('Unfortunitely -- An Unknow Error Happened, Please wait 3 seconds')
 time.sleep(3)

'''
該函數(shù)用于正則提取,將url內的BV號提取出來
'''
def getBv(href):
 pattern = re.compile('(BV.*?)\?')
 data = re.search(pattern,href)
 if data == None:
 return ''
 return data.group(1)

if __name__ == "__main__":

 #頭部偽裝
 headers = {
 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
 }
 hrefList = []
 titleList = []
 #需要爬取多少頁,自行進行修改,本代碼測試1~2頁
 for i in range(1,3): 
 url = "https://search.bilibili.com/all?keyword=歪嘴戰(zhàn)神&page={0}".format(i) #修改keyword后的關鍵字即可
 l = getHref(url,i)
 for vurl,title in l:
  hrefList.append(vurl)
  titleList.append(title)
 print("第{0}頁爬取結束".format(i))
 time.sleep(2)
 
 print("---------------------------開始截取BV號-----------------------------")
 for i in range(len(hrefList)):
 hrefList[i] = getBv(hrefList[i])
 with open("bv.txt",'w',encoding='utf-8') as f:
 for i in range(len(hrefList)): 
  f.write(hrefList[i]+"\t"+titleList[i]+"\n")
 print("爬取結束")

3.爬取結果

在這里插入圖片描述

唧唧下載視頻

給出唧唧的鏈接,唧唧,很好用的小工具。
我們只需要將剛才爬取好的鏈接放在一邊,不斷復制BV號,然后唧唧進行下載即可。

在這里插入圖片描述

視頻重命名

唧唧下載好的視頻如下所示:

在這里插入圖片描述

為什么需要將它們進行改名呢,因為如果當視頻數(shù)量越來越多時,比如幾千幾萬時,通過名字便會越來越難以管理,同時也難以進行去重,很大概率會不斷下載重復的視頻。
在B站,BV號便是每個視頻的“身份證”(主鍵),因此用其進行視頻命名可以方便日后管理,同時也方便進行去重。

代碼

'''
author:Ericam
description: 用于將下載下來的b站視頻重命名,命名格式為bv號
'''
import os
import difflib

if __name__ == '__main__':
 
 bvpath = os.path.join("D:/","Coding","python","Python爬蟲")
 os.chdir(bvpath)
 d = {}
 '''
 bvdownload.txt里存放bv號與title名
 若之前爬蟲爬取了幾千個,而唧唧只下載了幾百個,便可以將這些已下載的bv和title復制到
 bvdownload.txt中,將已下載的視頻進行改名
 '''
 with open("bvdownload.txt",'r',encoding='utf-8')as f:
 lines = f.readlines()
 for val in lines:
  val = val.strip("\n")
  data = val.split("\t")
  bv = data[0]
  title = data[1]
  d[title] = bv
 
 #視頻存放位置
 path = 'F:/bilibili視頻/'
 os.chdir(path)
 videoList = os.listdir()
 
 #開始進行模糊匹配
 for key in d:
 video = difflib.get_close_matches(key,videoList,1, cutoff=0.3)
 if len(video) == 0:
  continue
 video = video[0]
 #檢查視頻是否已存在,若存在則刪除視頻
 if os.path.isfile(d[key]+".mp4") and os.path.isfile(video):
  os.remove(video)
 else:
  if os.path.isfile(video):
  os.rename(video,d[key]+".mp4")
 print("重命名完成!")

結果演示

重命名完成的視頻列表如下:

在這里插入圖片描述

到此這篇關于python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析的文章就介紹到這了,更多相關python爬蟲Bilibili內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python matplotlib.pyplot.plot()參數(shù)用法

    python matplotlib.pyplot.plot()參數(shù)用法

    這篇文章主要介紹了python matplotlib.pyplot.plot()參數(shù)用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python使用matplotlib實現(xiàn)繪制自定義圖形功能示例

    Python使用matplotlib實現(xiàn)繪制自定義圖形功能示例

    這篇文章主要介紹了Python使用matplotlib實現(xiàn)繪制自定義圖形功能,結合實例形式分析了Python基于matplotlib模塊實現(xiàn)自定義圖形繪制相關操作技巧,需要的朋友可以參考下
    2018-01-01
  • 利用numpy和pandas處理csv文件中的時間方法

    利用numpy和pandas處理csv文件中的時間方法

    下面小編就為大家分享一篇利用numpy和pandas處理csv文件中的時間方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python中operator模塊的操作符使用示例總結

    Python中operator模塊的操作符使用示例總結

    operator模塊中包含了Python的各種內置操作符,諸如邏輯、比較、計算等,這里我們針對一些常用的操作符來作一個Python中operator模塊的操作符使用示例總結:
    2016-06-06
  • python使用websocket庫發(fā)送WSS請求

    python使用websocket庫發(fā)送WSS請求

    WebSocket是一種在客戶端和服務器之間進行雙向通信的協(xié)議,Python中有許多WebSocket庫可供選擇,其中一個常用的是websocket庫,使用該庫可以輕松地發(fā)送WSS請求,需要的朋友可以參考下
    2023-10-10
  • python 提取文件指定列的方法示例

    python 提取文件指定列的方法示例

    這篇文章主要介紹了python 提取文件指定列的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • django在開發(fā)中取消外鍵約束的實現(xiàn)

    django在開發(fā)中取消外鍵約束的實現(xiàn)

    這篇文章主要介紹了django在開發(fā)中取消外鍵約束的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 精心整理總結的Python自動化測試面試題

    精心整理總結的Python自動化測試面試題

    簡單來說,自動化測試框架包含了所有的測試工作所需的測試框架,下面這篇文章主要給大家介紹了關于Python自動化測試面試題的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • pytorch方法測試——激活函數(shù)(ReLU)詳解

    pytorch方法測試——激活函數(shù)(ReLU)詳解

    今天小編就為大家分享一篇pytorch方法測試——激活函數(shù)(ReLU)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 聊聊python中的異常嵌套

    聊聊python中的異常嵌套

    這篇文章主要介紹了python中的異常嵌套的相關資料,幫助大家更好的理解和學習python 異常的相關知識,感興趣的朋友可以了解下
    2020-09-09

最新評論