python爬虫 线程池创建并获取文件代码实例


Posted in Python onSeptember 28, 2019

本实例主要进行线程池创建,多线程获取、存储视频文件

梨视频:利用线程池进行视频爬取

#爬取梨视频数据
import requests
import re
from lxml import etree
from multiprocessing.dummy import Pool
import random

# 定义获取视频数据方法
def getVideoData(url): # url为列表中的视频url
  return requests.get(url=url,headers=headers).content

# 定义存储数据方法
def saveVideo(data):
  fileName = str(random.randint(0,5000))+'.mp4'
  with open(fileName,'wb') as fp:
    fp.write(data)

# 爬取数据
#实例化一个线程池对象,开启5个线程池
pool = Pool(5)

url = 'https://www.pearvideo.com/category_1'
headers = {
  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'
}
page_text = requests.get(url=url,headers=headers).text
tree = etree.HTML(page_text)
li_list = tree.xpath('//div[@id="listvideoList"]/ul/li')

video_url_list = [] # 存的是将要下载视频的url
for li in li_list:
  detail_url = 'https://www.pearvideo.com/'+li.xpath('./div/a/@href')[0]
  detail_page = requests.get(url=detail_url,headers=headers).text
  #因为视频连接不在标签汇中,而是一个js语句,所以用正则匹配
  video_url = re.findall('srcUrl="(.*?)",vdoUrl',detail_page,re.S)[0]
  video_url_list.append(video_url)
  
# map函数的应用:参数1:回调函数,参数2:列表;
#将列表中的参数赋值给回调函数的形参,让回调函数处理
video_data_list = pool.map(getVideoData,video_url_list)

pool.map(saveVideo,video_data_list)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
实例讲解Python中SocketServer模块处理网络请求的用法
Jun 28 Python
OpenCV实现人脸识别
Apr 07 Python
Python在图片中添加文字的两种方法
Apr 29 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
Django 内置权限扩展案例详解
Mar 04 Python
python替换字符串中的子串图文步骤
Jun 19 Python
在django中自定义字段Field详解
Dec 03 Python
python中文分词库jieba使用方法详解
Feb 11 Python
Django如何与Ajax交互
Apr 29 Python
python 单线程和异步协程工作方式解析
Sep 28 #Python
python爬虫 正则表达式解析
Sep 28 #Python
python爬虫 Pyppeteer使用方法解析
Sep 28 #Python
python安装scipy的步骤解析
Sep 28 #Python
python网络爬虫 CrawlSpider使用详解
Sep 27 #Python
python numpy存取文件的方式
Apr 01 #Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 #Python
You might like
单位速度在实战中的运用
2020/03/04 星际争霸
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
PHP Include文件实例讲解
2019/02/15 PHP
js字符编码函数区别分析
2011/12/28 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
在Python的循环体中使用else语句的方法
2015/03/30 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
python列表使用实现名字管理系统
2019/01/30 Python
python下载微信公众号相关文章
2019/02/26 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
Python实现时间序列可视化的方法
2019/08/06 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
Python如何合并多个字典或映射
2020/07/24 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
思想政治教育专业个人求职信范文
2013/12/20 职场文书
家属答谢词
2015/01/05 职场文书
会议室管理制度范本
2015/08/06 职场文书
用Java实现简单计算器功能
2021/07/21 Java/Android
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers