2014-04-09 87 views
2

我一直在使用requests庫來挖掘這個網站。我在10分鐘內沒有提出太多要求。說25.突然間,網站給我一個404錯誤。python請求機器人檢測?

我的問題是:我讀了一個地方,使用瀏覽器獲取URL與使用類似requests的URL獲取URL不同。因爲requests提取沒有獲取Cookie和其他瀏覽器會執行的操作。 requests有沒有一個選項來模擬瀏覽器,所以服務器不認爲我是一個機器人?或者這不是一個問題?

+0

你是說我必須發送一個用戶代理?不知道這個鏈接如何回答我的問題。 – jason

+0

我希望我有時間研究一切。 – jason

回答

4

基本上,至少有一兩件事你可以做的就是發送User-Agent頭:

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0'} 

response = requests.get(url, headers=headers) 

此外requests,您可以通過使用selenium模擬真實用戶 - 它採用了真正的瀏覽器 - 在這種情況下,有顯然沒有簡單的方法來區分您的自動用戶和其他用戶。硒也可以使用「無頭」瀏覽器。

此外,檢查您正在抓取的網站是否提供API。如果沒有API或者您沒有使用它,請確保您知道該網站是否確實允許自動抓取網頁,請參閱Terms of use。你知道,可能有一個原因,爲什麼他們在一段時間內請求太多後會阻止你。

另見:

+0

謝謝。我會在請求中使用你的頭文件,並在需要時檢查硒。我聽到你的使用條款,但我正在挖掘中國網站。坦率地說,中國沒有任何法律。好吧,沒有人會跟着他們。 – jason

+0

@jason_cant_code只記得:'Ignorantia juris non excusat'(http://en.wikipedia.org/wiki/Ignorantia_juris_non_excusat)。 – alecxe

+0

人權被寫入中國憲法。他們應該首先執行該法律。 – jason