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基础教程之数字处理(math)模块详解
Mar 25 Python
Python常用正则表达式符号浅析
Aug 13 Python
Python教程之全局变量用法
Jun 27 Python
python 爬虫百度地图的信息界面的实现方法
Oct 27 Python
Python timer定时器两种常用方法解析
Jan 20 Python
python随机模块random使用方法详解
Feb 14 Python
详解python内置常用高阶函数(列出了5个常用的)
Feb 21 Python
Python decimal模块使用方法详解
Jun 08 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python Polars库的使用简介
Apr 21 Python
python缺失值填充方法示例代码
Dec 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
超级简单的php+mysql留言本源码
2009/11/11 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
如何使用angularJs
2017/05/08 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
2020/04/26 Javascript
python实现简单的计时器功能函数
2015/03/14 Python
python处理html转义字符的方法详解
2016/07/01 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
python实现的分层随机抽样案例
2020/02/25 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
借款协议书
2014/04/12 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
淘宝好评语句大全
2014/12/31 职场文书
颐和园英文导游词
2015/01/30 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
工作一年自我鉴定
2019/06/20 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang