<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          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ù)視頻進行請求

          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)路爬蟲標準庫(代替urllib)

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

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

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

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

          2:獲取視頻偽url

          1. #參數(shù)準備

          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)本人實驗,使用上文獲得的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. #僅需要做幾個簡單的截取切片操作就可以替換相關(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ù)視頻進行請求

          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ù)分析,人工智能 免費精品教程0基礎(chǔ)入門到企業(yè)項目實戰(zhàn)教學(xué)!


          掃一掃
          更多咨詢早知道!



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


          萬水千山總是情,點個【在看】行不行

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

          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人精品一区二区三区在线看 | 太原操逼网站 | 男女日皮视频免费 | 加勒比精品在线 | 大香蕉色性在线视频 |