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中常用的各种数据库操作模块和连接实例
May 29 Python
详解K-means算法在Python中的实现
Dec 05 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
Python运维之获取系统CPU信息的实现方法
Jun 11 Python
用Python实现大文本文件切割的方法
Jan 12 Python
Python中filter与lambda的结合使用详解
Dec 24 Python
Python定时器线程池原理详解
Feb 26 Python
python图片指定区域替换img.paste函数的使用
Apr 09 Python
python speech模块的使用方法
Sep 09 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
Python 语言实现六大查找算法
Jun 30 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 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
dedecms系统常用术语汇总
2007/04/03 PHP
php Mysql日期和时间函数集合
2007/11/16 PHP
php导出excel格式数据问题
2014/03/11 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
表单JS弹出填写提示效果代码
2011/04/16 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
js读取本地文件的实例
2017/12/22 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
python命令行工具Click快速掌握
2019/07/04 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
信息科学与技术专业求职信范文
2014/02/20 职场文书
自荐信的基本格式
2014/02/22 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
生死抉择观后感
2015/06/09 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL