4

下面的 Python 代码返回“403”:

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。

4

1 回答 1

7

似乎您的特定服务器需要一个 User-Agent 标头。

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

编辑:
对我的机器请求的默认用户代理如下:python-requests/1.2.0 CPython/2.7.4 Darwin/12.3.0

经过一些测试,我发现任何包含该单词的 User-Agentpython在此服务器上都会失败。

于 2013-04-24T17:11:47.023 回答