基于线程池提升请求模块效率的方法

  介绍

这篇文章主要讲解了基于线程池提升请求模块效率的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

普通方法:爬取梨视频

进口再保险
  导入的时间
  进口随机
  进口的要求
  从lxml进口etree
  
  start_time=time.time ()
  
  url=癶ttps://www.pearvideo.com/category_3"
  头={
  “User-Agent":“Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/79.0.3945.88 Safari 537.36“;
  }=& # 39;交货srcUrl=?(。*和# 63;)“,vdoUrl=srcUrl& # 39;
  
  def request_video (url):
  “““
  向视频链接发送请求
  “““
  返回请求。get (url=url,标题=头).content
  
  def save_video(内容):
  “““
  将视频的二进制数据保存到本地
  “““
  video_name=str(随机的。randint (100, 999)) +“.mp4"
  张开(video_name & # 39; wb # 39;) f:
  f.write(内容)
  
  
  #获取首页源码
  page_text=请求。get (url=url,标题=标题)。text
  
  树=etree.HTML (page_text)
  li_list=tree.xpath (& # 39;//ul (@class=發istvideo-list clearfix"]/李# 39;)
  
  video_url_list=列表()
  李在li_list:
  detail_url=癶ttps://www.pearvideo.com/"+ li.xpath (& # 39;。/div//@href& # 39;) [0]
  
  #获取该视频页面的源码
  detail_page_text=请求。get (url=detail_url头=标题)。text
  
  #正则匹配视频的URL
  video_url=re.findall (ex、detail_page_text re.S) [0]
  video_url_list.append (video_url)
  
  内容=request_video (video_url)
  save_video(内容)
  
  
  print(“执行耗时:“,time.time () - start_time) 

执行耗时:147.22410440444946

使用线程池:爬取梨视频

 #使用线程池爬去梨视频的
  进口再保险
  导入的时间
  进口随机
  进口的要求
  从lxml进口etree
  多处理。假进口池
  
  
  start_time=time.time ()
  
  url=癶ttps://www.pearvideo.com/category_3"
  头={
  “User-Agent":“Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/79.0.3945.88 Safari 537.36“;
  }=& # 39;交货srcUrl=?(。*和# 63;)“,vdoUrl=srcUrl& # 39;
  
  def request_video (url):
  “““
  向视频链接发送请求
  “““
  返回请求。get (url=url,标题=头).content
  
  def save_video(内容):
  “““
  将视频的二进制数据保存到本地
  “““
  video_name=str(随机的。randint (100, 999)) +“.mp4"
  张开(video_name & # 39; wb # 39;) f:
  f.write(内容)
  
  
  #获取首页源码
  page_text=请求。get (url=url,标题=标题)。text
  
  树=etree.HTML (page_text)
  li_list=tree.xpath (& # 39;//ul (@class=發istvideo-list clearfix"]/李# 39;)
  
  video_url_list=列表()
  李在li_list:
  detail_url=癶ttps://www.pearvideo.com/"+ li.xpath (& # 39;。/div//@href& # 39;) [0]
  
  #获取该视频页面的源码
  detail_page_text=请求。get (url=detail_url头=标题)。text
  
  #正则匹配视频的URL
  video_url=re.findall (ex、detail_page_text re.S) [0]
  video_url_list.append (video_url)
  
  池=池(4)
  
  #使用线程池将视频的二进制数据下载下来
  content_list=池。地图(request_video video_url_list)
  
  #使用线程池将视频的二进制数据保存到本地
  池。地图(save_video content_list)
  
  print(“执行耗时:“,time.time () - start_time) 

看完上述内容,是不是对基于线程池提升请求模块效率的方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。

基于线程池提升请求模块效率的方法