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创建文件和追加文件内容实例
Oct 21 Python
玩转python爬虫之正则表达式
Feb 17 Python
简单了解Python中的几种函数
Nov 03 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
python使用turtle库绘制时钟
Mar 25 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
Python实现注册、登录小程序功能
Sep 21 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
python opencv实现图像边缘检测
Apr 29 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
详解KMP算法以及python如何实现
Sep 18 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
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
python批量下载图片的三种方法
2013/04/22 Python
python机器学习库常用汇总
2017/11/15 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
教育专业自荐书范文
2013/12/17 职场文书
党员服务承诺书
2014/05/28 职场文书
娱乐节目策划方案
2014/06/10 职场文书
小学数学教研活动总结
2014/07/01 职场文书
施工安全协议书范本
2014/09/26 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
建筑工程催款函
2015/06/24 职场文书
防溺水主题班会教案
2015/08/12 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript