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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
Python中的random()方法的使用介绍
May 15 Python
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
浅谈Python中列表生成式和生成器的区别
Aug 03 Python
详解Python中的from..import绝对导入语句
Jun 21 Python
Python中列表和元组的使用方法和区别详解
Dec 30 Python
使用PyQt4 设置TextEdit背景的方法
Jun 14 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 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
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
PHP Smarty模版简单使用方法
2016/03/30 PHP
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
python sort、sort_index方法代码实例
2019/03/28 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Python函数中的可变长参数详解
2019/09/12 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
中秋晚会策划方案
2014/06/12 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
关于观后感的作文
2015/06/18 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
Redis如何实现分布式锁
2021/08/23 Redis
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
Python编写冷笑话生成器
2022/04/20 Python