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

作者:General_zy 时间:2023-12-30 09:38:56 

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)

#使用线程池对数据视频进行请求
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

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

由于本人也是菜鸟,所以百思不得其解,恰巧看到B站用户”_千户”的留言才得知真伪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"


#仅需要做几个简单的截取切片操作就可以替换相关内容

old=video_url.split('/')[-1].split('-')[0]  
new='cont-'+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爬取梨视频生活板块最热视频

来源:https://blog.csdn.net/General_zy/article/details/114791619

标签:python,爬取,梨视频,视频
0
投稿

猜你喜欢

  • JS实现数字格式千分位相互转换方法

    2023-08-31 08:24:48
  • php5.4以下版本json不支持不转义内容中文的解决方法

    2023-07-02 17:10:45
  • python实现百度文库自动化爬取

    2023-02-01 23:57:22
  • Python创建SQL数据库流程逐步讲解

    2024-01-23 14:29:17
  • 前端优化,让你的网页显示的更快更流畅

    2009-06-08 13:09:00
  • python实战教程之自动扫雷

    2022-08-16 01:05:48
  • Python使用matplotlib简单绘图示例

    2023-11-03 01:33:00
  • Python接口自动化之文件上传/下载接口详解

    2022-01-02 17:32:28
  • Java使用JDBC连接数据库

    2024-01-22 03:21:45
  • 利用python3如何给数据添加高斯噪声

    2023-06-11 20:52:17
  • scrapy+scrapyd+gerapy 爬虫调度框架超详细教程

    2023-02-06 23:08:41
  • 在django项目中,如何单独运行某个python文件

    2023-04-27 07:37:22
  • javascript实现下雪效果【实例代码】

    2024-05-25 15:18:40
  • SWFObject 2.1以上版本语法介绍

    2024-04-10 10:49:18
  • golang中切片copy复制和等号复制的区别介绍

    2024-02-13 15:10:13
  • javascript中mouseenter与mouseover的异同

    2024-05-02 16:11:54
  • python Opencv计算图像相似度过程解析

    2022-02-02 03:56:52
  • python 反编译exe文件为py文件的实例代码

    2021-12-06 06:51:21
  • mysql出现ERROR 1819 (HY000)的解决方法

    2024-01-18 21:23:26
  • Python程序设计入门(2)变量类型简介

    2021-09-28 14:51:18
  • asp之家 网络编程 m.aspxhome.com