python爬虫 线程池创建并获取文件代码实例
Python  /  管理员 发布于 7年前   167
本实例主要进行线程池创建,多线程获取、存储视频文件
梨视频:利用线程池进行视频爬取
#爬取梨视频数据import requestsimport refrom lxml import etreefrom multiprocessing.dummy import Poolimport 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).texttree = etree.HTML(page_text)li_list = tree.xpath('//div[@id="listvideoList"]/ul/li')video_url_list = [] # 存的是将要下载视频的urlfor 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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号