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之使用Python操作数据库(1)
Nov 25 Python
Python标准库defaultdict模块使用示例
Apr 28 Python
python reduce 函数使用详解
Dec 05 Python
Python使用matplotlib填充图形指定区域代码示例
Jan 16 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
python中列表的切片与修改知识点总结
Jul 23 Python
Python list与NumPy array 区分详解
Nov 06 Python
python标准库os库的函数介绍
Feb 12 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
Python学习开发之图形用户界面详解
Aug 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
js的一些常用方法小结
2011/06/29 Javascript
javascript中Object使用详解
2015/01/26 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
python字典get()方法用法分析
2015/04/17 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
材料化学应届生求职信
2013/10/09 职场文书
信息工程学院毕业生推荐信
2013/11/05 职场文书
给国外客户的邀请函
2014/01/30 职场文书
大学新生军训感言
2014/02/25 职场文书
会议欢迎标语
2014/06/30 职场文书
青年标兵事迹材料
2014/08/16 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
学校安全管理制度
2015/08/06 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL