Не удается получить веб-сайт с помощью python urllib.urlopen () или любого другого веб-браузера, кроме Shiretoko - PullRequest
0 голосов
/ 11 марта 2010

Вот URL сайта, который я хочу получить

https://salami.parc.com/spartag/GetRepository?friend=jmankoff&keywords=antibiotic&option=jmankoff%27s+tags

Когда я выбираю веб-сайт со следующим кодом и отображаю содержимое со следующим кодом:

sock = urllib.urlopen("https://salami.parc.com/spartag/GetRepository?friend=jmankoff&keywords=antibiotic&option=jmankoff's+tags")
html = sock.read()
sock.close()
soup = BeautifulSoup(html)
print soup.prettify()

Я получаю следующий вывод:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <title>
   Error message
  </title>
 </head>
 <body>
  <h2>
   Invalid input data
  </h2>
 </body>
</html>

Я получаю такой же результат и с urllib2. Интересно, что этот URL работает только на веб-браузере Shiretoko v3.5.7. (когда я говорю, что это работает, я имею в виду, что это приносит мне правильную страницу). Когда я передаю этот URL в Firefox 3.0.15 или Konqueror v4.2.2. Я получаю точно такую ​​же страницу ошибки (с «Неверные входные данные»). Я понятия не имею, что создает эту разницу и как я могу получить эту страницу, используя Python. Есть идеи?

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 марта 2010

Если вы видите документ urllib2 , он говорит:

urllib2.build_opener([handler, ...])¶

    .....
    If the Python installation has SSL support (i.e., if the ssl module can be imported), HTTPSHandler will also be added. 

    .....

Вы можете попробовать использовать urllib2 вместе с модулем ssl . В качестве альтернативы вы можете использовать httplib

0 голосов
/ 11 марта 2010

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

Я получаю то же сообщение для Firefox 3.5.8 (shiretoko) на Linux

...