2013-04-24 146 views
3

的Python代碼如下返回「403」:Python的請求庫返回錯誤的狀態代碼

import requests 
url = 'http://bedstardirect.co.uk/star-collection-braemar-double-bedstead.html' 
r = requests.get(url) 
print r.status_code 

但是這個頁面是有效的和腳本應該返回「200」一樣,下面的Perl腳本:

use WWW::Mechanize; 
my $mech = WWW::Mechanize->new(); 
my $url = 'http://bedstardirect.co.uk/star-collection-braemar-double-bedstead.html'; 
$mech->get($url); 
print $mech->status,"\n"; 

我也使用Firefox中的Firebug進行了檢查,並且所有請求都有'200'狀態碼。

我使用Python請求v1.2.0。

回答

5

似乎您的特定服務器需要User-Agent標頭。

嘗試:
r = requests.get('http://bedstardirect.co.uk/star-collection-braemar-double-bedstead.html', headers={'User-Agent': 'a user agent'})

編輯:
對我的計算機的請求默認的User-Agent出來爲:python-requests/1.2.0 CPython/2.7.4 Darwin/12.3.0

一些測試,我發現,任何用戶代理包含單詞後python將在此服務器上失敗。

+0

是的,這解決了問題。謝謝。 – 2013-04-24 17:18:24

+0

這很奇怪,因爲請求默認發送一個。 – 2013-04-24 21:10:52

相關問題