首页 > 其他分享 >异步处理-梨视频爬取

异步处理-梨视频爬取

时间:2022-11-06 01:00:13浏览次数:83  
标签:异步 视频 url dic 爬取 headers video id

import requests
from lxml import html
import random
import os
from multiprocessing.dummy import Pool
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/'
'537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}

请求梨视频的人物模块的视频数据,视频+标题

URL = 'https://www.pearvideo.com/category_1'
page_text = requests.get(url=URL, headers=headers).text
etree = html.etree
tree = etree.HTML(page_text)
li_list = tree.xpath('//ul[@id="categoryList" ]/li')
urls = []
for li in li_list:
# 获取视频的id
video_no = li.xpath('./div/a/@href')[0]
video_no = str(video_no)
video_id = video_no.split('')[1]
video_url = 'https://www.pearvideo.com/videoStatus.jsp?'
# 获取视频的标题
video_title = li.xpath('./div/a/div[2]/text()')[0]+'.mp4'
# 请求ajax中的地址
params = {
'contId':video_id,
'mrd': str(random.random())
}
ajax_headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/'
'537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
'Referer': 'https://www.pearvideo.com/video
' + video_id
}
response = requests.get(url=video_url, headers=ajax_headers, params=params).json()
# 得到伪装地址,进行转换,得到真实地址
id_list = []
camouflage_url = str(response["videoInfo"]["videos"]["srcUrl"])
camouflage_url_id = str(camouflage_url).split('/')[-1].split('-')[0]
id_list.append(camouflage_url_id)
for id in id_list:
# 真实地址
really_url = camouflage_url.replace(id,'cont-'+video_id)
dic_ = {
'name':video_title,
'url':really_url
}
urls.append(dic_)

请求下载视频数据,保存为.mp4格式

def get_video(dic):
url = dic['url']
print(dic['name'], "开始下载……")
video_data = requests.get(url=url, headers=headers).content
if not os.path.exists('./梨视频'):
os.mkdir('./梨视频')
video_path = './梨视频/'+dic['name']
with open(video_path, 'wb') as fp:
fp.write(video_data)
print(dic['name'], "下载成功!")

线程池异步处理

pool = Pool(25)
pool.map(get_video,urls)
pool.close()
pool.join()

标签:异步,视频,url,dic,爬取,headers,video,id
From: https://www.cnblogs.com/wonekings/p/16861806.html

相关文章

  • 直升机FPGA多路视频采集叠加OSD字符VGA-HDMI-DVI-SDI采集融合板卡设计
    视频融合技术是虚拟现实技术的一个分支,也可以说是虚拟现实的一个发展阶段。视频融合技术指将一个或多个由视频采集设备采集的关于某场景或模型的图像序列视频与一个与之相关......
  • 微服务Spring Boot 整合Redis 基于Redis的Stream 消息队列 实现异步秒杀下单
    文章目录​​一、什么是Redis消息队列?​​​​二、Redis消息队列--基于RedisList实现消息队列​​​​三、Redis消息队列--基于Pubsub的消息队列​​​​四、......
  • 27、视频功能(全)
    视频功能一、发布视频数据库表结构{"_id":ObjectId("5e82dd6164019531fc471ff0"),"vid":NumberLong("100001"),"userId":NumberLong("3"),"picU......
  • OpenCV图像处理与视频分析详解
    1、OpenCV4环境搭建VS2017新建一个控制台项目配置包含目录配置库目录配置链接器配置环境变量重新启动VS20172、第一个图像显示程序main.cpp#i......
  • 异步编程
    同步与异步同步:做完一件事才能做下一件事异步:可同时做好几件事,且互不影响一般程序都是从上往下的同步运行程序按顺序执行setTimeout就是个常用的异步方法程序不......
  • 同步异步,单线程多线程
    同步:同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉,但是程序还在执行。这种情况下,用户不能关闭界面,如果关闭了,程序就中断......
  • 基于国产芯片RK1126的智能视频分析网关
    产品简介智能边缘计算网关力求打造一个开放式、可扩展、二次开发升级的智能型AI终端,硬件基于arm的CPU,2T算力的NPU,具备更低的功耗,更高的性能,同时扩展多路外围接口,如RS232、4......
  • 【视频】CNN(卷积神经网络)模型以及R语言实现回归数据分析|附代码数据
    全文链接:http://tecdat.cn/?p=18149无人驾驶汽车最早可以追溯到1989年。神经网络已经存在很长时间了,那么近年来引发人工智能和深度学习热潮的原因是什么呢?(点击文末“阅读......
  • 视频融合平台EasyCVR各项数据正常,却无法用海康NVR接入是什么原因?
    EasyCVR视频融合云平台开放度高、兼容性强、可支持灵活拓展与第三方集成,目前已经成为安防市场主流的视频能力层服务平台。平台可支持多协议、多类型的设备接入,包括国标GB28......
  • 前端ffmpeg实现视频剪切
    利用ffmpeg实现纯前端视频剪切注意:在新版本Chrome浏览器中由于安全性问题,只能在https或localhost当中才能正常使用1.下载ffmpegnpminstall@ffmpeg/ffmpeg@ffmpeg/co......