网页视频抓取脚本( ,本文通过实例代码介绍的非常详细的学习或工作)

优采云 发布时间: 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爬梨视频内容,请搜索脚本之家以前的文章或继续浏览下方相关文章,希望您以后多多支持脚本之家!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线