成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python爬蟲:給我一個(gè)鏈接,虎牙視頻隨便下載

lvzishen / 1234人閱讀

摘要:爬取的原理我們來到虎牙視頻主界面,鏈接為虎牙視頻主界面然后隨便點(diǎn)擊一下某個(gè)視頻的發(fā)布者,來到這個(gè)發(fā)布者的主界面,點(diǎn)擊到視頻,如下我們可以看到這個(gè)界面下有許多視頻可以觀看,那么怎樣下載呢我們隨便點(diǎn)擊其中的一個(gè)視頻進(jìn)入,按

1. 爬取的原理


我們來到虎牙視頻主界面,鏈接為:虎牙視頻主界面
然后隨便點(diǎn)擊一下某個(gè)視頻的發(fā)布者,來到這個(gè)發(fā)布者的主界面,點(diǎn)擊到視頻,如下:

我們可以看到這個(gè)界面下有許多視頻可以觀看,那么怎樣下載呢?我們隨便點(diǎn)擊其中的一個(gè)視頻進(jìn)入,按電腦鍵盤的F12來到開發(fā)者模式,然后點(diǎn)擊network->js->找到相應(yīng)的網(wǎng)址->視頻下載鏈接
我們可以找到相應(yīng)的視頻下載鏈接。
那么怎樣發(fā)起請求呢?這是一個(gè)get請求,網(wǎng)址為:https://v-api-player-ssl.huya.com,請求參數(shù)如下:

那么這些請求參數(shù)具體代表什么意思呢?

2. 具體怎樣實(shí)現(xiàn)

小編經(jīng)過分析發(fā)現(xiàn),

  • 第一個(gè)參數(shù)callback的值應(yīng)該是:jQuery+一段隨機(jī)字段+_+時(shí)間戳,既然有一段隨機(jī)字段,那么這個(gè)不改直接用應(yīng)該也是可以的;
  • 第二個(gè)參數(shù)r的值應(yīng)該是固定的,這個(gè)直接用就行;
  • 第三個(gè)參數(shù)vid,也就是的視頻的id,其實(shí)這個(gè)參數(shù)就是這個(gè)視頻在服務(wù)器上的數(shù)據(jù)庫中的id(小編猜測的,畢竟小編最近也在做相應(yīng)的項(xiàng)目,也會(huì)使用到相應(yīng)的id編號(hào)),這個(gè)參數(shù)在發(fā)布者視頻下可以通過re正則表達(dá)式獲取;
  • 第四個(gè)參數(shù)是format,應(yīng)該是類型,這個(gè)應(yīng)該也是固定的,直接copy即可;
  • 第五個(gè)參數(shù)也就是時(shí)間戳,直接copy或者寫都行。

3. 代碼和運(yùn)行結(jié)果

代碼如下:

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):        # 獲取當(dāng)前鏈接界面的總頁數(shù)        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("視頻總頁數(shù)為:",aList[-2].text)        self.page = int(input("請輸入想下載的視頻頁數(shù):"))    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爬蟲:制作一個(gè)屬于自己的IP代理模塊
另外,小編并沒有實(shí)現(xiàn)下載視頻的功能,只是把視頻的下載鏈接給提取出來了哈!爬蟲需要遵守相應(yīng)的法律法規(guī),不能對服務(wù)器造成很大的負(fù)擔(dān),還有,就是,有的視頻時(shí)間比較長,代碼實(shí)現(xiàn)下載效果還沒有直接copy下載鏈接到網(wǎng)頁端下載那么高效,當(dāng)然,有興趣的讀者可以自己去試試哈!

看看運(yùn)行效果吧!

運(yùn)用Python爬蟲下載虎牙視頻

對了,需要注意輸入的視頻鏈接喔!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/120004.html

相關(guān)文章

  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • 如何用Python抓抖音上的小姐姐

    摘要:比如分鐘破譯朋友圈測試小游戲文章里用的方法但有些根本就沒有提供網(wǎng)頁端,比如今年火得不行的抖音。所以常用的方式就是通過在電腦上裝一些抓包軟件,將手機(jī)上的網(wǎng)絡(luò)請求全部顯示出來??偨Y(jié)下,重點(diǎn)是的抓取,關(guān)鍵是配置代理證書,難點(diǎn)是對請求的分析。 爬蟲的案例我們已講得太多。不過幾乎都是 網(wǎng)頁爬蟲 。即使有些手機(jī)才能訪問的網(wǎng)站,我們也可以通過 Chrome 開發(fā)者工具 的 手機(jī)模擬 功能來訪問,以便...

    FingerLiu 評(píng)論0 收藏0
  • 一步步爬取Coursera課程資源

    摘要:至此登錄功能初步實(shí)現(xiàn)。為了方便我們快速定位到每節(jié)課的所有資源,可以把一節(jié)課的所有資源文件均命名為課名文件類型。可以看一下一個(gè)測試?yán)又械奈募?,部分?nèi)容如下到這里為止,我們已經(jīng)成功完成爬取課程資源的目標(biāo),具體的代碼放在上。 原文地址 有時(shí)候我們需要把一些經(jīng)典的東西收藏起來,時(shí)時(shí)回味,而Coursera上的一些課程無疑就是經(jīng)典之作。Coursera中的大部分完結(jié)課程都提供了完整的配套教學(xué)資...

    Simon_Zhou 評(píng)論0 收藏0
  • Python從入門到轉(zhuǎn)行

    摘要:學(xué)了大半年之后成功轉(zhuǎn)行做前端了。包含大量其他神經(jīng)網(wǎng)絡(luò)庫中的包裝器和抽象,其中最值得注意的是,其中也包含一些機(jī)器學(xué)習(xí)的實(shí)用模塊。它是輕量級(jí)可擴(kuò)展的神經(jīng)網(wǎng)絡(luò)工具包,同時(shí)擁有友好的界面,可供機(jī)器學(xué)習(xí)的訓(xùn)練和預(yù)測使用。 題記:大二的時(shí)候發(fā)現(xiàn)人生苦短,所以信了拍神,開始學(xué)Python。學(xué)了大半年之后成功轉(zhuǎn)行做前端了。來寫個(gè)教程幫助大家入門Python。 Python零基礎(chǔ)入門 零基礎(chǔ)入門就得從最...

    ingood 評(píng)論0 收藏0
  • Python 網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn):抖音短視頻去水印爬蟲詳解

    摘要:我們知道,在抖音中下載到的視頻是有水印的,這就催生出了很多抖音短視頻去水印的解析網(wǎng)站,小程序等。禁止重定向,設(shè)置運(yùn)行結(jié)果,是一個(gè)標(biāo)簽,便是重定向后的地址。 我們知道...

    hlcc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<