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实现跨文件全局变量的方法
Jul 07 Python
低版本中Python除法运算小技巧
Apr 05 Python
Python 正则表达式入门(中级篇)
Dec 07 Python
python中利用await关键字如何等待Future对象完成详解
Sep 07 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
pygame实现非图片按钮效果
Oct 29 Python
Django REST 异常处理详解
Jul 15 Python
python获取对象信息的实例详解
Jul 07 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 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 PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
JavaScript之自定义类型
2012/05/04 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
python 简单的多线程链接实现代码
2016/08/28 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
医学生职业生涯规划书范文
2014/03/13 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript
HttpClient实现文件上传功能
2022/08/14 Java/Android