python爬虫利用线程池下载视频
由于requests模块中,requests.get()是线程阻塞的,所有当有多个爬虫进行爬取时,那么单线程式爬虫是耗时比较长的,所以我们需要使用线程池,利用线程池来爬取耗时比较长的资源,这里我们使用梨视频网站下载视频为例子。
一、导入相关模块
import requests
# 使用xpath时需要导入
from lxml import etree
# 正则
import re
# 线程池
from multiprocessing.dummy import Pool
二、爬取页面信息
从这里我们可以看到改链接有四个li标签,点开li标签可以看到url和视频的名字,点进相关的视频链接,我们对该网站进行分析,发现该详细视频的连接是放在script标签中的,所以我们要使用正则表达式
# 爬取梨视频生活视频
url = 'https://www.pearvideo.com/category_5'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
}
response = requests.get(url, headers=headers, timeout=500)
tree = etree.HTML(response.text)
# 获取到所有的li(梨视频生活模块的最新四个视频)
li_list = tree.xpath('//ul[@id="listvideoListUl"]/li')
urls = []
# 获取li里面的url和name
for li in li_list:# 注意li.xpath('./')video_url = 'https://www.pearvideo.com/' + li.xpath('./div/a/@href')[0]video_name = li.xpath('./div/a/div[2]/text()')[0]video_response = requests.get(video_url, headers=headers)video_page = video_response.text# 正则表达式(由于这里是Js中的内容,并不是html内容)ex = 'srcUrl="(.*?)",vdoUrl'detail_url = re.findall(ex, video_page)[0]dic = {'url': detail_url,'name': video_name}urls.append(dic)
三、爬取视频资源
# 下载视频
def get_video(urls):print(urls['name'], '开始下载......')video = requests.get(urls['url'], headers=headers).contentwith open(urls['name']+'.mp4', 'wb') as fp:fp.write(video)print(urls['name'], '下载完成......')
四、线程池的使用`
# 初始化线程,该线程池有四个线程
pool = Pool(4)
# 启动线程池,第一个参数是方法名,第二个参数是一个可迭代的参数,可迭代参数赋值进入第一个方法中
pool.map(get_video, urls)
python爬虫利用线程池下载视频相关推荐
- Python爬虫——利用Scrapy批量下载图片
Python爬虫--利用Scrapy批量下载图片 Scrapy下载图片项目介绍 使用Scrapy下载图片 项目创建 项目预览 创建爬虫文件 项目组件介绍 Scrapy爬虫流程介绍 页面结构分析 定义I ...
- Python爬虫——使用线程池爬取同程旅行景点数据并做数据可视化
大家好!我是霖hero 正所谓:有朋自远方来,不亦乐乎?有朋友来找我们玩,是一件很快乐的事情,那么我们要尽地主之谊,好好带朋友去玩耍!那么问题来了,什么时候去哪里玩最好呢,哪里玩的地方最多呢? 今天将 ...
- python ping利用线程池获取在线设备
python ping获取一个VLAN在线设备 myPyPingDevice.py """=== coding: UTF8 ===""" # ...
- Python爬虫_线程池实例——北京新发地菜价
import requests import json import jsonpath from concurrent.futures import ThreadPoolExecutor print( ...
- Python爬虫:多平台短视频去水印下载器
Python爬虫:多平台短视频去水印下载器 功能介绍 各平台分解 抖音 快手 微视 皮皮搞笑 总结 源码仓库 本教程描述的爬取方案定档与2020年10月26日 郑重申明:该文章介绍的技术仅供用于学习, ...
- Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接
Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接 1. 前言 2. 实现过程 3. 运行结果 1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到 ...
- Python爬虫利用18行代码爬取虎牙上百张小姐姐图片
Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...
- python爬虫之壁纸的下载
python爬虫之壁纸的下载 好久没有写博客了,暑假这段时间在学校里面忙着写小论文,没机会写我最喜欢的爬虫了(虽然很简单,但架不住哥喜欢...) 好了,废话不多说了,开始把 本次爬虫爬取的是 手机壁纸 ...
- Python爬虫——Selenium 简介和下载
文章目录 Python爬虫--Selenium 简介和下载 1.Selenium 简介 2.Selenium 下载安装 3.Selenium 简单使用 Python爬虫--Selenium 简介和下载 ...
最新文章
- TEECHART使用TEXTOUT标注后,保存图片的方法?
- 504 Gateway Time-out错误的解决方法
- BZOJ.5068.友好的生物(思路)
- iOS逆向之深入解析App签名的双向验证机制和原理
- Projection with Type Hint用法
- (转)Facebook如何提高软件质量?
- 【AI视野·今日CV 计算机视觉论文速览 第156期】Mon, 9 Sep 2019
- 理解sklearn.feature.text中的CountVectorizer和TfidfVectorizer
- vuex从安装到使用
- IDEA 2017.3.3 Mybatis Plugin 3.154 安装和破解方法(Windows系统)
- 存用部首查字典如何查_SCI文献阅读技巧:3位博士总结如何看文献,干货满满!...
- windows10安装masscan
- 机器学习:弱监督学习简介
- kotlin学习---Field
- OV7725鹰眼摄像头
- 微信小程序----布局适配与物理逻辑像素
- 【数据库】学生档案管理系统(续)
- metaq spring
- JAVA打字小游戏,面向对象完成
- 三点外接圆的半径(面积)计算 Matlab实现