网页视频抓取脚本( ,本文通过实例代码介绍的非常详细的学习或工作)
优采云 发布时间: 2022-03-13 03:02网页视频抓取脚本(
,本文通过实例代码介绍的非常详细的学习或工作)
Python爬取梨视频生活版块最热视频
更新时间:2021-03-15 10:34:05 作者:General_zy
本篇文章主要介绍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=''+str(code)
true_video_url=video_url.replace(old,new)
dic={'name':name,
'my_url':true_video_url}
urls.append(dic)
#使用线程池对数据视频进行请求
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()
阐明:
当前日期(2021/3/14)版本的梨视频的视频伪url通过ajax获取。
部分代码说明:
1:模块
import requests #网路爬虫标准库(代替urllib)
from lxml import etree #用于解析页面信息
import random #梨视频的url中有一段需要随机数
import os #主要用于生成文件夹存放视频
from multiprocessing.dummy import Pool #导入线程池对应类
2:获取视频伪url
#参数准备
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抓取视频的视频下载内容是空的。
因为我也是菜鸟,所以想不通。偶然看到B站用户“_Qianhu”的留言,才知道真假url的区别:
这里视频地址是加密的,也就是ajax中获取的地址需要加上cont-,修改一个数字为id就是真实地址。
真实地址:“”
伪地址:“”
#仅需要做几个简单的截取切片操作就可以替换相关内容
old=video_url.split('/')[-1].split('-')[0]
new=''+str(code)
true_video_url=video_url.replace(old,new)
4:存储
#使用线程池对数据视频进行请求
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:结果
至此,这篇关于python爬梨视频生活版块最热视频的文章就介绍到这里了。更多相关python爬梨视频内容,请搜索脚本之家以前的文章或继续浏览下方相关文章,希望您以后多多支持脚本之家!