2013-04-24 5 views
3

Питон код ниже возвращает «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"; 

Я также проверил Firebug в Firefox, и все запросы имеют код состояния «200».

Я использую Python Requests v1.2.0.

ответ

5

Кажется, что для вашего конкретного сервера требуется заголовок User-Agent.

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

Edit:
по умолчанию User-Agent запросов на моей машине выходит как: python-requests/1.2.0 CPython/2.7.4 Darwin/12.3.0

После некоторого тестирования я обнаружил, что любой User-Agent, который содержит слово python не будет работать на этом сервере.

+0

Да, это решило проблему. Спасибо. –

+0

Это странно, поскольку запросы отправляются по умолчанию. –

Смежные вопросы