由于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爬虫利用线程池下载视频相关推荐

  1. Python爬虫——利用Scrapy批量下载图片

    Python爬虫--利用Scrapy批量下载图片 Scrapy下载图片项目介绍 使用Scrapy下载图片 项目创建 项目预览 创建爬虫文件 项目组件介绍 Scrapy爬虫流程介绍 页面结构分析 定义I ...

  2. Python爬虫——使用线程池爬取同程旅行景点数据并做数据可视化

    大家好!我是霖hero 正所谓:有朋自远方来,不亦乐乎?有朋友来找我们玩,是一件很快乐的事情,那么我们要尽地主之谊,好好带朋友去玩耍!那么问题来了,什么时候去哪里玩最好呢,哪里玩的地方最多呢? 今天将 ...

  3. python ping利用线程池获取在线设备

    python ping获取一个VLAN在线设备 myPyPingDevice.py """=== coding: UTF8 ===""" # ...

  4. Python爬虫_线程池实例——北京新发地菜价

    import requests import json import jsonpath from concurrent.futures import ThreadPoolExecutor print( ...

  5. Python爬虫:多平台短视频去水印下载器

    Python爬虫:多平台短视频去水印下载器 功能介绍 各平台分解 抖音 快手 微视 皮皮搞笑 总结 源码仓库 本教程描述的爬取方案定档与2020年10月26日 郑重申明:该文章介绍的技术仅供用于学习, ...

  6. Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

    Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接 1. 前言 2. 实现过程 3. 运行结果 1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到 ...

  7. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  8. python爬虫之壁纸的下载

    python爬虫之壁纸的下载 好久没有写博客了,暑假这段时间在学校里面忙着写小论文,没机会写我最喜欢的爬虫了(虽然很简单,但架不住哥喜欢...) 好了,废话不多说了,开始把 本次爬虫爬取的是 手机壁纸 ...

  9. Python爬虫——Selenium 简介和下载

    文章目录 Python爬虫--Selenium 简介和下载 1.Selenium 简介 2.Selenium 下载安装 3.Selenium 简单使用 Python爬虫--Selenium 简介和下载 ...

最新文章

  1. TEECHART使用TEXTOUT标注后,保存图片的方法?
  2. 504 Gateway Time-out错误的解决方法
  3. BZOJ.5068.友好的生物(思路)
  4. iOS逆向之深入解析App签名的双向验证机制和原理
  5. Projection with Type Hint用法
  6. (转)Facebook如何提高软件质量?
  7. 【AI视野·今日CV 计算机视觉论文速览 第156期】Mon, 9 Sep 2019
  8. 理解sklearn.feature.text中的CountVectorizer和TfidfVectorizer
  9. vuex从安装到使用
  10. IDEA 2017.3.3 Mybatis Plugin 3.154 安装和破解方法(Windows系统)
  11. 存用部首查字典如何查_SCI文献阅读技巧:3位博士总结如何看文献,干货满满!...
  12. windows10安装masscan
  13. 机器学习:弱监督学习简介
  14. kotlin学习---Field
  15. OV7725鹰眼摄像头
  16. 微信小程序----布局适配与物理逻辑像素
  17. 【数据库】学生档案管理系统(续)
  18. metaq spring
  19. JAVA打字小游戏,面向对象完成
  20. 三点外接圆的半径(面积)计算 Matlab实现

热门文章

  1. oracle报错Error while registering Oracle JDBC Diagno
  2. 阿里2021年面经汇总
  3. 透明度百分和六进制对比表
  4. 5月中国减持美国国债325亿美元 持有8677亿美元
  5. JavaBean的书写规范
  6. tableau 字段去重_tableau prep学习
  7. cf869C The Intriguing Obsession
  8. django MVT模式介绍
  9. 互联网数据中心——IDC(Internet Data Center)
  10. 计算机自带录音机格式,Windows自带录音机