欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何基于線程池提升request模塊效率

 更新時(shí)間:2020年04月18日 09:09:01   作者:返回主頁(yè)人生苦短,我用python  
這篇文章主要介紹了如何基于線程池提升request模塊效率,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

普通方法:爬取梨視頻

import re
import time
import random
import requests
from lxml import etree

start_time = time.time()

url = "https://www.pearvideo.com/category_3"
headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"
}

ex = 'srcUrl="(.*?)",vdoUrl=srcUrl'

def request_video(url):
  """
  向視頻鏈接發(fā)送請(qǐng)求
  """
  return requests.get(url=url, headers=headers).content

def save_video(content):
  """
  將視頻的二進(jìn)制數(shù)據(jù)保存到本地
  """
  video_name = str(random.randint(100, 999)) + ".mp4"
  with open(video_name, 'wb') as f:
    f.write(content)

    
# 獲取首頁(yè)源碼
page_text = requests.get(url=url, headers=headers).text

tree = etree.HTML(page_text)
li_list = tree.xpath('//ul[@class="listvideo-list clearfix"]/li')

video_url_list = list()
for li in li_list:
  detail_url = "https://www.pearvideo.com/" + li.xpath('./div/a/@href')[0]
  
  # 獲取該視頻頁(yè)面的源碼
  detail_page_text = requests.get(url=detail_url, headers=headers).text
  
  # 正則匹配視頻的URL
  video_url = re.findall(ex, detail_page_text, re.S)[0]
  video_url_list.append(video_url)
  
  content = request_video(video_url)
  save_video(content)


print("執(zhí)行耗時(shí): ", time.time() - start_time)

執(zhí)行耗時(shí): 147.22410440444946

使用線程池:爬取梨視頻

# 使用線程池爬去梨視頻的
import re
import time
import random
import requests
from lxml import etree
from multiprocessing.dummy import Pool


start_time = time.time()

url = "https://www.pearvideo.com/category_3"
headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"
}

ex = 'srcUrl="(.*?)",vdoUrl=srcUrl'

def request_video(url):
  """
  向視頻鏈接發(fā)送請(qǐng)求
  """
  return requests.get(url=url, headers=headers).content

def save_video(content):
  """
  將視頻的二進(jìn)制數(shù)據(jù)保存到本地
  """
  video_name = str(random.randint(100, 999)) + ".mp4"
  with open(video_name, 'wb') as f:
    f.write(content)

    
# 獲取首頁(yè)源碼
page_text = requests.get(url=url, headers=headers).text

tree = etree.HTML(page_text)
li_list = tree.xpath('//ul[@class="listvideo-list clearfix"]/li')

video_url_list = list()
for li in li_list:
  detail_url = "https://www.pearvideo.com/" + li.xpath('./div/a/@href')[0]
  
  # 獲取該視頻頁(yè)面的源碼
  detail_page_text = requests.get(url=detail_url, headers=headers).text
  
  # 正則匹配視頻的URL
  video_url = re.findall(ex, detail_page_text, re.S)[0]
  video_url_list.append(video_url)
  
pool = Pool(4)
  
#使用線程池將視頻的二進(jìn)制數(shù)據(jù)下載下來(lái)
content_list = pool.map(request_video, video_url_list)
  
# 使用線程池將視頻的二進(jìn)制數(shù)據(jù)保存到本地
pool.map(save_video, content_list)  

print("執(zhí)行耗時(shí): ", time.time() - start_time)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 簡(jiǎn)單介紹Python中的filter和lambda函數(shù)的使用

    簡(jiǎn)單介紹Python中的filter和lambda函數(shù)的使用

    這篇文章主要簡(jiǎn)單介紹了Python中的filter和lambda函數(shù)的使用,是Python學(xué)習(xí)中的基礎(chǔ),同時(shí)lambda匿名函數(shù)的使用也是經(jīng)常被用來(lái)對(duì)比各種編程語(yǔ)的重要特性,言需要的朋友可以參考下
    2015-04-04
  • 在Python中使用代理IP的方法詳解

    在Python中使用代理IP的方法詳解

    在網(wǎng)絡(luò)爬蟲開發(fā)中,使用代理IP是非常常見的技巧,Python作為一門強(qiáng)大的編程語(yǔ)言,也提供了很多方法來(lái)使用代理IP,下面,我將就如何在Python中使用代理IP進(jìn)行詳細(xì)的闡述,并舉例說(shuō)明,需要的朋友可以參考下
    2023-07-07
  • 基于python讀取圖像的幾種方式匯總

    基于python讀取圖像的幾種方式匯總

    Python進(jìn)行圖片處理,第一步就是讀取圖片,下面這篇文章主要給大家介紹了關(guān)于基于python讀取圖像的幾種方式的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • python實(shí)現(xiàn)多線程的方式及多條命令并發(fā)執(zhí)行

    python實(shí)現(xiàn)多線程的方式及多條命令并發(fā)執(zhí)行

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)多線程的方式及多條命令并發(fā)執(zhí)行,感興趣的小伙伴們可以參考一下
    2016-06-06
  • python 數(shù)據(jù)的清理行為實(shí)例詳解

    python 數(shù)據(jù)的清理行為實(shí)例詳解

    這篇文章主要介紹了python 數(shù)據(jù)的清理行為實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Python自然語(yǔ)言處理使用spaCy庫(kù)進(jìn)行文本預(yù)處理

    Python自然語(yǔ)言處理使用spaCy庫(kù)進(jìn)行文本預(yù)處理

    這篇文章主要為大家介紹了Python自然語(yǔ)言處理使用spaCy庫(kù)進(jìn)行文本預(yù)處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Python使用Pandas庫(kù)常見操作詳解

    Python使用Pandas庫(kù)常見操作詳解

    這篇文章主要介紹了Python使用Pandas庫(kù)常見操作,結(jié)合實(shí)例形式詳細(xì)分析了Python Pandas模塊的功能、原理、數(shù)據(jù)對(duì)象創(chuàng)建、查看、選擇等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • 如何解決django-celery啟動(dòng)后迅速關(guān)閉

    如何解決django-celery啟動(dòng)后迅速關(guān)閉

    在本篇文章里小編給大家整理的是關(guān)于django-celery啟動(dòng)后迅速關(guān)閉的解決方法,有需要的朋友們學(xué)習(xí)下。
    2019-10-10
  • Python中sort函數(shù)正則表達(dá)式的使用

    Python中sort函數(shù)正則表達(dá)式的使用

    在python中,sort是列表排序的一種方法,本文就來(lái)介紹一下sort函數(shù)正則表達(dá)式的使用以及與sorted的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Python入門之三角函數(shù)atan2()函數(shù)詳解

    Python入門之三角函數(shù)atan2()函數(shù)詳解

    這篇文章主要介紹了Python入門之三角函數(shù)atan2()函數(shù)詳解,分享了其實(shí)例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評(píng)論