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

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

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

普通方法:爬取梨視頻

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ā)送請求
  """
  return requests.get(url=url, headers=headers).content

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

    
# 獲取首頁源碼
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]
  
  # 獲取該視頻頁面的源碼
  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í)行耗時: ", time.time() - start_time)

執(zhí)行耗時: 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ā)送請求
  """
  return requests.get(url=url, headers=headers).content

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

    
# 獲取首頁源碼
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]
  
  # 獲取該視頻頁面的源碼
  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)
  
#使用線程池將視頻的二進制數(shù)據(jù)下載下來
content_list = pool.map(request_video, video_url_list)
  
# 使用線程池將視頻的二進制數(shù)據(jù)保存到本地
pool.map(save_video, content_list)  

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

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

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

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

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

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

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

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

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

    Python自然語言處理使用spaCy庫進行文本預處理

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

    Python使用Pandas庫常見操作詳解

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

    如何解決django-celery啟動后迅速關閉

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

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

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

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

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

最新評論