前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python爬取梨视频生活板块最热视频

python爬取梨视频生活板块最热视频

作者头像
python学习教程
发布2021-03-17 11:36:17
7390
发布2021-03-17 11:36:17
举报
文章被收录于专栏:python学习教程python学习教程

完整代码如下:

代码语言:javascript
复制
import requestsfrom lxml import etreeimport randomimport osfrom multiprocessing.dummy import Poolif 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).texttree=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)#使用线程池对数据视频进行请求def get_video_data(dic):print(dic['name']+'开始下载'+'\n')data_url=dic['my_url']data=requests.get(url=data_url,headers=headers).contentwith 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:模块

代码语言:javascript
复制
import requests #网路爬虫标准库(代替urllib)from lxml import etree #用于解析页面信息import random #梨视频的url中有一段需要随机数import os #主要用于生成文件夹存放视频from multiprocessing.dummy import Pool #导入线程池对应类

2:获取视频伪url

代码语言:javascript
复制
#参数准备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'}#获取urlnew_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

经本人实验,使用上文获得的url爬取视频下载内容为空。

此处视频地址做了加密即ajax中得到的地址需要加上cont-,并且修改一段数字为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"

代码语言:javascript
复制
#仅需要做几个简单的截取切片操作就可以替换相关内容old=video_url.split('/')[-1].split('-')[0]new='cont-'+str(code)true_video_url=video_url.replace(old,new)

4:存储

代码语言:javascript
复制
#使用线程池对数据视频进行请求def get_video_data(dic):print(dic['name']+'开始下载'+'\n')data_url=dic['my_url']data=requests.get(url=data_url,headers=headers).contentwith 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爬取梨视频生活板块最热视频的文章就介绍到这了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档