2013-04-24 150 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

相关问题