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 UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
python支付宝支付示例详解
Aug 22 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
Dec 23 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 Python
python语言实现贪吃蛇游戏
Nov 13 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
Python读取和写入Excel数据
Apr 20 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操作XML作为数据库的类
2010/12/19 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
php实用代码片段整理
2016/11/12 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
浅谈django orm 优化
2018/08/18 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
eBay加拿大站:eBay.ca
2019/06/20 全球购物
如何执行一个shell程序
2012/11/23 面试题
体育教育毕业生自荐信
2013/11/21 职场文书
食堂个人先进事迹
2014/01/22 职场文书
大学军训感言400字
2014/03/11 职场文书
施工员岗位职责
2014/03/16 职场文书
个人校本研修方案
2014/05/26 职场文书
房屋出租委托书格式
2014/09/23 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
Django程序的优化技巧
2021/04/29 Python
如何使用SQL Server语句创建表
2022/04/12 SQL Server