2011-09-11 3 views
3

Я пытаюсь скрести страницу с помощью питонаPython urllib2.open Подключение сброса по ошибке пэра

Проблема заключается в том, я получаю Errno54 сброс соединения пэром.

ошибка возникает, когда я запускаю этот код -

urllib2.urlopen("http://www.bkstr.com/webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalogId=10001&categoryId=9604&storeId=10161&langId=-1&programId=562&termId=100020629&divisionDisplayName=Stanford&departmentDisplayName=ILAC&courseDisplayName=126&sectionDisplayName=01&demoKey=d&purpose=browse") 

это происходит для всех URL-адресов на этом pag- чем проблема?

+0

Можете ли вы открыть ссылку в своем браузере? Если нет, то неверно ожидать, что команда Python откроет его. –

+0

он работает в браузере – praks5432

ответ

2
$> telnet www.bkstr.com 80 
Trying 64.37.224.85... 
Connected to www.bkstr.com. 
Escape character is '^]'. 
GET /webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalogId=10001&categoryId=9604&storeId=10161&langId=-1&programId=562&termId=100020629&divisionDisplayName=Stanford&departmentDisplayName=ILAC&courseDisplayName=126&sectionDisplayName=01&demoKey=d&purpose=browse HTTP/1.0 

Connection closed by foreign host. 

У вас не будет радости, получающей этот URL-адрес от python или где-либо еще. Если он работает в вашем браузере, тогда должно произойти что-то еще, например, куки или аутентификация или некоторые из них. Или, возможно, сервер сломан, или они изменили свою конфигурацию.

Попробуйте открыть его в браузере, к которому вы никогда не обращались к этому сайту, прежде чем его проверить. Затем войдите в систему и повторите попытку.

Edit: Это было печенье после всех:

import cookielib, urllib2 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
#Need to set a cookie 
opener.open("http://www.bkstr.com/") 
#Now open the page we want 
data = opener.open("http://www.bkstr.com/webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalogId=10001&categoryId=9604&storeId=10161&langId=-1&programId=562&termId=100020629&divisionDisplayName=Stanford&departmentDisplayName=ILAC&courseDisplayName=126&sectionDisplayName=01&demoKey=d&purpose=browse").read() 

Выход выглядит нормально, но вы должны проверить, что он делает то, что вы хотите :)

+0

wait- так что я не могу очистить информацию с этой страницы? – praks5432

+0

Не просто запрос GET, похоже. Что вы пытаетесь найти на веб-сайте? (Я посмотрю, есть ли для вас другой способ). –

+0

по какой-то причине я не могу получить доступ к странице через сафари – praks5432

0

я наткнулся подобной ошибки просто в последнее время. Соединение выпадало и сбрасывалось. Я пробовал cookiejars, расширенные задержки и разные заголовки/useragents, но ничего не получилось. В конце концов, исправление было простым. Я пошел от urllib2 к запросам. Старый;

import urllib2 
opener = urllib2.build_opener() 
buf = opener.open(url).read() 

Новый;

import requests 
buf = requests.get(url).text 

После этого все работает отлично.

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