python爬虫 线程池创建并获取文件代码实例
更新时间:2019年09月28日 09:37:17 作者:陪伴is最长情的告白
这篇文章主要介绍了python爬虫 线程池创建并获取文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本实例主要进行线程池创建,多线程获取、存储视频文件
梨视频:利用线程池进行视频爬取
#爬取梨视频数据
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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Django 用户登陆访问限制实例 @login_required
这篇文章主要介绍了Django 用户登陆访问限制实例 @login_required,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-05-05
在Python的Django框架中simple-todo工具的简单使用
这篇文章主要介绍了在Python的Django框架中simple-todo工具的简单使用,该工具基于原web.py中的开源项目,需要的朋友可以参考下2015-05-05
python内置函数breakpoint()与bytearray()示例详解
本文给大家分享的是python内置函数breakpoint()与bytearray()的相关资料,并给大家附上了详细代码,有需要的小伙伴可以参考下2017-04-04


最新评论