提公升爬蟲效率之執行緒池

2022-05-26 20:24:08 字數 1441 閱讀 7523

一、使用flask模擬阻塞,利用執行緒池爬取資料

#

模擬flask

#pip install flask

from flask import flask,render_template #

返回乙個模板檔案需要匯入render_tamplate

from time import

sleep)'

/bobo')

defindex_1():

return

'hello world''

/jay')

defindex_2():

sleep(2)

return render_template('

test.html')

'/tom')

defindex_3():

sleep(2)

return render_template('

test.html')

if__name__ == '

__main__':

括號裡面也可以寫debug=true 也可以不寫

執行緒池**:

#

同步**

#import requests

#import time##

urls = [

#'',

#'',

#'',

#'',#]

#start = time.time()

#for url in urls:

#page_text = requests.get(url).text

#print(len(page_text))##

print('總耗時',time.time()-start)

#非同步**

import

requests

import

time

from multiprocessing.dummy import

pool

pool = pool(4)

urls =[

'','',

'','',

]start =time.time()

defget_request(url):

page_text =requests.get(url).text

print

(len(page_text))

defparse(page_text):

print('

模仿解析')

page_text_list = pool.map(get_request,urls) #

這個map做資料請求

pool.map(parse,page_text_list) #

這個map做資料解析

print('

總耗時',time.time()-start)

如何基於執行緒池提公升request模組效率

普通方法 爬取梨 import re import time import random import requests f程式設計客棧rom lxml import etree start time time.time url headers ex srcurl vdourl srcurl def...

提公升爬蟲效率的方法

任務物件 事件迴圈 特殊函式內部不能寫不支援非同步請求的模組,如time,requests.否則雖然不報錯但實現不了非同步 import asyncio import time start time time.time async def get request url await asyncio....

程序池 執行緒池效率測試

之前我們分別對計算密集型和io密集型任務,測試過多執行緒對執行效率的改進,下面我們依然分計算密集 檔案讀寫 網路請求三個部分,測試使用執行緒池 程序池如何改進執行效率 首先導入庫並定義三種任務的函式 import requests from bs4 import beautifulsoup impo...