1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        python爬取梨視頻生活板塊最熱視頻

        共 3395字,需瀏覽 7分鐘

         ·

        2021-03-16 11:47

        完整代碼如下:

        1. import requests

        2. from lxml import etree

        3. import random

        4. import os

        5. from multiprocessing.dummy import Pool

        6. if not os.path.exists('./視頻'):

        7. os.mkdir('./視頻')

        8. urls=[]

        9. url='https://www.pearvideo.com/category_5'

        10. headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45'}

        11. page_text=requests.get(url=url,headers=headers).text

        12. tree=etree.HTML(page_text)

        13. li_list=tree.xpath('//ul[@id="listvideoListUl"]/li')

        14. for li in li_list:

        15. a_url='https://www.pearvideo.com/'+li.xpath('./div/a/@href')[0]

        16. name=li.xpath('./div/a/div[2]/text()')[0]+'.mp4'

        17. mrd=random.random()

        18. code=li.xpath('./div/a/@href')[0][-7:]

        19. new_headers={'Referer': a_url,

        20. 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.50'

        21. }

        22. new_url='https://www.pearvideo.com/videoStatus.jsp?contId='+str(code)+'&mrd='+str(mrd)

        23. r=requests.get(url=new_url,headers=new_headers)

        24. video_url=eval(r.text)['videoInfo']['videos']['srcUrl']

        25. old=video_url.split('/')[-1].split('-')[0]

        26. new='cont-'+str(code)

        27. true_video_url=video_url.replace(old,new)

        28. dic={'name':name,

        29. 'my_url':true_video_url}

        30. urls.append(dic)

        31. #使用線程池對數(shù)據(jù)視頻進(jìn)行請求

        32. def get_video_data(dic):

        33. print(dic['name']+'開始下載'+'\n')

        34. data_url=dic['my_url']

        35. data=requests.get(url=data_url,headers=headers).content

        36. with open('./視頻/'+dic['name'],'wb') as f:

        37. f.write(data)

        38. print(dic['name']+'下載成功')

        39. pool=Pool(4)

        40. pool.map(get_video_data,urls)

        41. pool.close()

        42. pool.join()

        說明:

        當(dāng)前日期(2021/3/14)版本的梨視頻的視頻偽url由ajax獲取。

        部分代碼解釋:

        1:模塊

        1. import requests #網(wǎng)路爬蟲標(biāo)準(zhǔn)庫(代替urllib)

        2. from lxml import etree #用于解析頁面信息

        3. import random #梨視頻的url中有一段需要隨機(jī)數(shù)

        4. import os #主要用于生成文件夾存放視頻

        5. from multiprocessing.dummy import Pool #導(dǎo)入線程池對應(yīng)類

        2:獲取視頻偽url

        1. #參數(shù)準(zhǔn)備

        2. mrd=random.random()

        3. code=li.xpath('./div/a/@href')[0][-7:]

        4. new_headers={

        5. 'Referer': a_url,

        6. 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.50'

        7. }

        8. #獲取url

        9. new_url='https://www.pearvideo.com/videoStatus.jsp?contId='+str(code)+'&mrd='+str(mrd)

        10. r=requests.get(url=new_url,headers=new_headers)

        11. video_url=eval(r.text)['videoInfo']['videos']['srcUrl']

        3:獲取真正url

        經(jīng)本人實(shí)驗(yàn),使用上文獲得的url爬取視頻下載內(nèi)容為空。

        此處視頻地址做了加密即ajax中得到的地址需要加上cont-,并且修改一段數(shù)字為id才是真地址
        真地址:"https://video.pearvideo.com/mp4/third/20201120/cont-1708144-10305425-222728-hd.mp4"
        偽地址:"https://video.pearvideo.com/mp4/third/20201120/1606132035863-10305425-222728-hd.mp4"

        1. #僅需要做幾個(gè)簡單的截取切片操作就可以替換相關(guān)內(nèi)容

        2. old=video_url.split('/')[-1].split('-')[0]

        3. new='cont-'+str(code)

        4. true_video_url=video_url.replace(old,new)

        4:存儲

        1. #使用線程池對數(shù)據(jù)視頻進(jìn)行請求

        2. def get_video_data(dic):

        3. print(dic['name']+'開始下載'+'\n')

        4. data_url=dic['my_url']

        5. data=requests.get(url=data_url,headers=headers).content

        6. with open('./視頻/'+dic['name'],'wb') as f:

        7. f.write(data)

        8. print(dic['name']+'下載成功')

        9. pool=Pool(4)

        10. pool.map(get_video_data,urls)

        11. pool.close()

        12. pool.join()

        5:結(jié)果

        到此這篇關(guān)于python爬取梨視頻生活板塊最熱視頻的文章就介紹到這了

        掃下方二維碼加老師微信

        或是搜索老師微信號:XTUOL1988【切記備注學(xué)習(xí)Python】

        邀您來聽Python web開發(fā),Python爬蟲,Python數(shù)據(jù)分析,人工智能 免費(fèi)精品教程0基礎(chǔ)入門到企業(yè)項(xiàng)目實(shí)戰(zhàn)教學(xué)!


        掃一掃
        更多咨詢早知道!



        歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持


        萬水千山總是情,點(diǎn)個(gè)【在看】行不行

        *聲明:本文于網(wǎng)絡(luò)整理,版權(quán)歸原作者所有,如來源信息有誤或侵犯權(quán)益,請聯(lián)系我們刪除或授權(quán)事宜

        瀏覽 55
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲无码AV电影 | 少妇淫伦短篇小说全集 | 国产成人精品在线 | 车上掀起裙子挺进去 | 91久久精品日日躁夜夜躁欧美 | 日韩成年人视频在线观看 | 操小嫩逼视频 | 99久久夜色精品国产亚洲 | 国产传媒福利 | 国产亚洲精品综合一区91 |