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

完整代碼如下:
import requests
from lxml import etree
import random
import os
from multiprocessing.dummy import Pool
if not os.path.exists('./視頻'):
os.mkdir('./視頻')
urls=[]
url='https://www.pearvideo.com/category_5'
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'}
page_text=requests.get(url=url,headers=headers).text
tree=etree.HTML(page_text)
li_list=tree.xpath('//ul[@id="listvideoListUl"]/li')
for li in li_list:
a_url='https://www.pearvideo.com/'+li.xpath('./div/a/@href')[0]
name=li.xpath('./div/a/div[2]/text()')[0]+'.mp4'
mrd=random.random()
code=li.xpath('./div/a/@href')[0][-7:]
new_headers={'Referer': a_url,
'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'
}
new_url='https://www.pearvideo.com/videoStatus.jsp?contId='+str(code)+'&mrd='+str(mrd)
r=requests.get(url=new_url,headers=new_headers)
video_url=eval(r.text)['videoInfo']['videos']['srcUrl']
old=video_url.split('/')[-1].split('-')[0]
new='cont-'+str(code)
true_video_url=video_url.replace(old,new)
dic={'name':name,
'my_url':true_video_url}
urls.append(dic)
#使用線程池對(duì)數(shù)據(jù)視頻進(jìn)行請(qǐng)求
def get_video_data(dic):
print(dic['name']+'開始下載'+'\n')
data_url=dic['my_url']
data=requests.get(url=data_url,headers=headers).content
with open('./視頻/'+dic['name'],'wb') as f:
f.write(data)
print(dic['name']+'下載成功')
pool=Pool(4)
pool.map(get_video_data,urls)
pool.close()
pool.join()
說(shuō)明:
當(dāng)前日期(2021/3/14)版本的梨視頻的視頻偽url由ajax獲取。
部分代碼解釋:
1:模塊
import requests #網(wǎng)路爬蟲標(biāo)準(zhǔn)庫(kù)(代替urllib) from lxml import etree #用于解析頁(yè)面信息 import random #梨視頻的url中有一段需要隨機(jī)數(shù) import os #主要用于生成文件夾存放視頻 from multiprocessing.dummy import Pool #導(dǎo)入線程池對(duì)應(yīng)類
2:獲取視頻偽url
#參數(shù)準(zhǔn)備
mrd=random.random()
code=li.xpath('./div/a/@href')[0][-7:]
new_headers={
'Referer': a_url,
'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'
}
#獲取url
new_url='https://www.pearvideo.com/videoStatus.jsp?contId='+str(code)+'&mrd='+str(mrd)
r=requests.get(url=new_url,headers=new_headers)
video_url=eval(r.text)['videoInfo']['videos']['srcUrl']
3:獲取真正url
經(jīng)本人實(shí)驗(yàn),使用上文獲得的url爬取視頻下載內(nèi)容為空。
由于本人也是菜鳥,所以百思不得其解,恰巧看到B站用戶”_千戶”的留言才得知真?zhèn)蝩rl的差異:
此處視頻地址做了加密即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"
#僅需要做幾個(gè)簡(jiǎn)單的截取切片操作就可以替換相關(guān)內(nèi)容
old=video_url.split('/')[-1].split('-')[0]
new='cont-'+str(code)
true_video_url=video_url.replace(old,new)
4:存儲(chǔ)
#使用線程池對(duì)數(shù)據(jù)視頻進(jìn)行請(qǐng)求
def get_video_data(dic):
print(dic['name']+'開始下載'+'\n')
data_url=dic['my_url']
data=requests.get(url=data_url,headers=headers).content
with open('./視頻/'+dic['name'],'wb') as f:
f.write(data)
print(dic['name']+'下載成功')
pool=Pool(4)
pool.map(get_video_data,urls)
pool.close()
pool.join()
5:結(jié)果

到此這篇關(guān)于python爬取梨視頻生活板塊最熱視頻的文章就介紹到這了,更多相關(guān)python爬取梨視頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 爬取京東指定商品評(píng)論并進(jìn)行情感分析
本文主要講述了利用Python網(wǎng)絡(luò)爬蟲對(duì)指定京東商城中指定商品下的用戶評(píng)論進(jìn)行爬取,對(duì)數(shù)據(jù)預(yù)處理操作后進(jìn)行文本情感分析,感興趣的朋友可以了解下2021-05-05
python dict 相同key 合并value的實(shí)例
今天小編就為大家分享一篇python dict 相同key 合并value的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-01-01
Python實(shí)現(xiàn)兩款計(jì)算器功能示例
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)兩款計(jì)算器功能示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
利用Python對(duì)中國(guó)500強(qiáng)排行榜數(shù)據(jù)進(jìn)行可視化分析
這篇文章主要介紹了利用Python對(duì)中國(guó)500強(qiáng)排行榜數(shù)據(jù)進(jìn)行可視化分析,從不同角度去對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,可視化展示,下文詳細(xì)內(nèi)容介紹需要的小伙伴可以參考一下2022-05-05
利用Python快速搭建Markdown筆記發(fā)布系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了使用Python生態(tài)的成熟工具,在30分鐘內(nèi)搭建一個(gè)支持Markdown渲染、分類標(biāo)簽、全文搜索的私有化知識(shí)發(fā)布系統(tǒng),感興趣的小伙伴可以參考下2025-04-04
Python實(shí)現(xiàn)線性插值和三次樣條插值的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)線性插值和三次樣條插值的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

