第六章:高性能异步爬虫.zip

  • 德州111
    了解作者
  • Python
    开发工具
  • 7KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2021-03-04 15:19
    上传日期
python 爬虫 教程 高性能异步爬虫
第六章:高性能异步爬虫.zip
  • 第六章:高性能异步爬虫
  • 5.多任务协程01.py
    718B
  • flask服务.py
    351B
  • 8.多任务异步协程实战演练.py
    963B
  • 1.同步爬虫.py
    792B
  • 3.线程池在爬虫案例中的应用.py
    1.6KB
  • 7.aiohttp实现多任务异步协程.py
    1.4KB
  • 4.协程.py
    1KB
  • 6.多任务异步协程02.py
    696B
  • note
    1.4KB
  • 2.线程池基本使用.py
    875B
  • 9.异步爬虫实战案例.py
    0B
内容介绍
import requests from lxml import etree import re from multiprocessing.dummy import Pool #需求:爬取梨视频的视频数据 headers = { 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36' } #原则:线程池处理的是阻塞且较为耗时的操作 #对下述url发起请求解析出视频详情页的url和视频的名称 url = 'https://www.pearvideo.com/category_5' page_text = requests.get(url=url,headers=headers).text tree = etree.HTML(page_text) li_list = tree.xpath('//ul[@id="listvideoListUl"]/li') urls = [] #存储所有视频的链接and名字 for li in li_list: detail_url = 'https://www.pearvideo.com/'+li.xpath('./div/a/@href')[0] name = li.xpath('./div/a/div[2]/text()')[0]+'.mp4' #对详情页的url发起请求 detail_page_text = requests.get(url=detail_url,headers=headers).text #从详情页中解析出视频的地址(url) ex = 'srcUrl="(.*?)",vdoUrl' video_url = re.findall(ex,detail_page_text)[0] dic = { 'name':name, 'url':video_url } urls.append(dic) #对视频链接发起请求获取视频的二进制数据,然后将视频数据进行返回 def get_video_data(dic): url = dic['url'] print(dic['name'],'正在下载......') data = requests.get(url=url,headers=headers).content #持久化存储操作 with open(dic['name'],'wb') as fp: fp.write(data) print(dic['name'],'下载成功!') #使用线程池对视频数据进行请求(较为耗时的阻塞操作) pool = Pool(4) pool.map(get_video_data,urls) pool.close() pool.join()
评论
    相关推荐