Session提高requests的抓取速度小技巧

2021-10-02 06:18:12 字數 837 閱讀 6817

使用requests抓取資料的時候,爬蟲會模擬瀏覽器的行為,但是可能不知道,當開啟乙個網頁的時候,requests.get()可能速度很快,但是如果幾十個上百個**的時候呢,這個差距就出來了,例如下面。

import requests

import time

start = time.time(

)for _ in

range

(100):

resp = requests.get(

'').content.decode(

)end = time.time(

)print

(f'訪問一百次網頁,耗時:'

)

結果是用時20s,時間太長了,如果**更多,那就更久。但是我們可以改變一下。

import requests

import time

start = time.time(

)session = requests.session(

)for _ in

range

(100):

resp = session.get(

'').content.decode(

)end = time.time(

)print

(f'訪問一百次網頁,耗時:'

)

結果是用時5s,怎麼樣這速度就提公升了很大了吧,主要就是session()方法是,爬蟲在模擬瀏覽器的時候,開啟另乙個**是相當於重新開了乙個視窗用來訪問,並不是重新開乙個瀏覽器去訪問。這樣爬蟲不僅行為更像人類,而且節省了很多爬蟲後台模擬開啟瀏覽器的行為所浪費的時間。

重用Session提高https效能

https的主要缺點是需要設定連線,每次新的tls連續都需要握手,以便建立共享的加密金鑰,這個握手過程在標準tcp的握手過程之上還需要兩個額外的來回過程,用這樣乙個高延時的連線,在 第乙個位元組傳輸之前需要三個來回就讓人感覺這個 有點慢。tls有幾個特徵可以用來消除額外的來回,比如重用乙個會話ses...

python http請求工具Requests

只涉及一些常用的方法,一些高階特性檢視尾部鏈結 安裝pip install requests r 是response物件 r requests.get get r requests.post post r requests.put put r requests.delete dele r reque...

Python爬蟲 HTTP協議 Requests庫

http協議 http hypertext transfer protocol 即超文字傳輸協議。url是通過http協議訪問資源的internet路徑,乙個url對應乙個資料資源。http協議對資源的操作 requests庫提供了http所有的基本請求方式。官方介紹 requests庫的6個主要方...