摘要:爬取的原理我們來到虎牙視頻主界面,鏈接為虎牙視頻主界面然后隨便點擊一下某個視頻的發布者,來到這個發布者的主界面,點擊到視頻,如下我們可以看到這個界面下有許多視頻可以觀看,那么怎樣下載呢我們隨便點擊其中的一個視頻進入,按
我們來到虎牙視頻主界面,鏈接為:虎牙視頻主界面
然后隨便點擊一下某個視頻的發布者,來到這個發布者的主界面,點擊到視頻,如下:
我們可以看到這個界面下有許多視頻可以觀看,那么怎樣下載呢?我們隨便點擊其中的一個視頻進入,按電腦鍵盤的F12來到開發者模式,然后點擊network->js->找到相應的網址->視頻下載鏈接
我們可以找到相應的視頻下載鏈接。
那么怎樣發起請求呢?這是一個get請求,網址為:https://v-api-player-ssl.huya.com,請求參數如下:
那么這些請求參數具體代表什么意思呢?
小編經過分析發現,
代碼如下:
import requestsfrom lxml import etreefrom crawlers.userAgent import useragentimport reimport jsonimport timeclass video(object): def __init__(self,url): # url 為輸入的鏈接 self.url = url self.page = 0 self.u = useragent() def getPages(self): # 獲取當前鏈接界面的總頁數 headers = {"user-agent":self.u.getUserAgent()} rsp = requests.get(url=self.url,headers=headers) html = etree.HTML(rsp.text) aList = html.xpath("http://div[@class="user-paginator"]/ul/li/a") print("視頻總頁數為:",aList[-2].text) self.page = int(input("請輸入想下載的視頻頁數:")) def downloadVideo(self): # 下載視頻的方法,并沒有下載視頻,只是獲取視頻的下載鏈接 for i in range(1,self.page+1): if i == 1: url2 = "{}?sort=news".format(self.url) else: url2 = "{}?sort=news&p={}".format(self.url,i) headers = {"user-agent":self.u.getUserAgent()} rsp = requests.get(url=url2,headers=headers) html2 = etree.HTML(rsp.text) hrefs = html2.xpath("http://div[@class="content-list"]/ul/li/a") for j in range(len(hrefs)): href = hrefs[j].xpath("./@href")[0] title = hrefs[j].xpath("./@title")[0] print("視頻名稱為:",title) vid = re.findall("/play/(/d*).html",href)[0] # 獲取vid self.getDownloadHref(vid=vid) print("#"*50) time.sleep(2) def getDownloadHref(self,vid): url3 = "https://v-api-player-ssl.huya.com" params={"callback": "jQuery1124017458848743440036_1632126349635", "r": "vhuyaplay/video", "vid": vid, "format": "mp4,m3u8", "_": "1632126349643"} rsp = requests.get(url=url3,headers={"user-agent":self.u.getUserAgent()},params=params) infos = rsp.text lindex = infos.find("(") rindex = infos.find(")") dict2 = json.loads(infos[lindex+1:rindex]) list2 = dict2["result"]["items"] v_list2=["高清","原畫","流暢"] for i in range(len(list2)): print(v_list2[i],list2[i]["transcode"]["urls"][0])if __name__ == "__main__": url = input("請輸入視頻鏈接:") v = video(url) v.getPages() v.downloadVideo()
其中crawlers模塊如果讀者一直閱讀小編的博客,就知道是來干什么的,如果讀者是第一次來閱讀小編的博客,可以去看看小編的這篇博客,博客鏈接為:Python爬蟲:制作一個屬于自己的IP代理模塊
另外,小編并沒有實現下載視頻的功能,只是把視頻的下載鏈接給提取出來了哈!爬蟲需要遵守相應的法律法規,不能對服務器造成很大的負擔,還有,就是,有的視頻時間比較長,代碼實現下載效果還沒有直接copy下載鏈接到網頁端下載那么高效,當然,有興趣的讀者可以自己去試試哈!
看看運行效果吧!
運用Python爬蟲下載虎牙視頻
對了,需要注意輸入的視頻鏈接喔!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/120004.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:比如分鐘破譯朋友圈測試小游戲文章里用的方法但有些根本就沒有提供網頁端,比如今年火得不行的抖音。所以常用的方式就是通過在電腦上裝一些抓包軟件,將手機上的網絡請求全部顯示出來。總結下,重點是的抓取,關鍵是配置代理證書,難點是對請求的分析。 爬蟲的案例我們已講得太多。不過幾乎都是 網頁爬蟲 。即使有些手機才能訪問的網站,我們也可以通過 Chrome 開發者工具 的 手機模擬 功能來訪問,以便...
摘要:至此登錄功能初步實現。為了方便我們快速定位到每節課的所有資源,可以把一節課的所有資源文件均命名為課名文件類型。可以看一下一個測試例子中的文件,部分內容如下到這里為止,我們已經成功完成爬取課程資源的目標,具體的代碼放在上。 原文地址 有時候我們需要把一些經典的東西收藏起來,時時回味,而Coursera上的一些課程無疑就是經典之作。Coursera中的大部分完結課程都提供了完整的配套教學資...
摘要:學了大半年之后成功轉行做前端了。包含大量其他神經網絡庫中的包裝器和抽象,其中最值得注意的是,其中也包含一些機器學習的實用模塊。它是輕量級可擴展的神經網絡工具包,同時擁有友好的界面,可供機器學習的訓練和預測使用。 題記:大二的時候發現人生苦短,所以信了拍神,開始學Python。學了大半年之后成功轉行做前端了。來寫個教程幫助大家入門Python。 Python零基礎入門 零基礎入門就得從最...
摘要:我們知道,在抖音中下載到的視頻是有水印的,這就催生出了很多抖音短視頻去水印的解析網站,小程序等。禁止重定向,設置運行結果,是一個標簽,便是重定向后的地址。 我們知道...
閱讀 3046·2023-04-26 02:27
閱讀 2763·2021-11-22 13:54
閱讀 902·2021-11-12 10:36
閱讀 3753·2021-10-09 09:44
閱讀 3177·2021-10-09 09:41
閱讀 1223·2021-09-22 10:02
閱讀 2833·2019-08-30 15:56
閱讀 3103·2019-08-30 11:02