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程序实例(通讯录)
Nov 29 Python
python中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
Python利用ansible分发处理任务
Aug 04 Python
利用Python开发微信支付的注意事项
Aug 19 Python
详解python里使用正则表达式的全匹配功能
Oct 19 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
python读写csv文件方法详细总结
Jul 05 Python
python 执行终端/控制台命令的例子
Jul 12 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
python3.7将代码打包成exe程序并添加图标的方法
Oct 11 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 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
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
用nodejs写的一个简单项目打包工具
2013/05/11 NodeJs
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
Python的collections模块真的很好用
2021/03/01 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
留学推荐信怎么写
2014/01/25 职场文书
苏州园林导游词
2015/02/03 职场文书
公积金贷款承诺书
2015/04/30 职场文书