MechanicalSoup StatefulBrowser: невозможно открыть URL - PullRequest
0 голосов
/ 09 июля 2019

У меня есть скрипт Python, использующий MechanicalSoup StatefulBrowser для открытия URL, который раньше работал.Но он недавно перестал работать при открытии определенного веб-сайта, и я не изменил никакого кода.

Я попытался открыть другие веб-сайты, и это нормально.Это конкретный веб-сайт, который не открывается: http://a810 -bisweb.nyc.gov / bisweb / ComplaintsByAddressServlet? Allbin = 4606689

import mechanicalsoup

browser = mechanicalsoup.StatefulBrowser()

# open url test
url = "http://www.cnn.com"
print("opening website: {}".format(url))
browser.open(url)
print("done website: {}".format(url))

url = "http://a810-bisweb.nyc.gov/bisweb/ComplaintsByAddressServlet?allbin=4606689"
print("opening website: {}".format(url))
browser.open(url)
print("done website: {}".format(url))

Ниже приведен вывод, который я получилс www.cnn.com, который открылся, как и ожидалось.Но 2-я ссылка просто зависает.

Любая помощь?Или, если кто-нибудь знает, как связаться с разработчиком MechanicalSoup, сообщите мне.

Вывод:

opening website: http://www.cnn.com
done website: http://www.cnn.com
opening website: http://a810-bisweb.nyc.gov/bisweb/ComplaintsByAddressServlet?allbin=4606689
... hangs ...

Спасибо.

1 Ответ

0 голосов
/ 09 июля 2019

Многие порталы блокируют соединение, если имеет неправильный заголовок «Пользователь-агент», который сообщает серверу, какой веб-браузер используется для подключения.

Инструменты Python (например, requests) часто используют слово Python в User-Agent, поэтому сервер может распознать, что это не настоящий веб-браузер, и заблокировать соединение.

Если я использую текст "Mozilla/5.0" в качестве User-Agent, тогда я могу подключиться снова

browser = mechanicalsoup.StatefulBrowser()
browser.set_user_agent('Mozilla/5.0')

Текст "Mozilla/5.0" - это не полный текст, используемый веб-браузером для чтения, поэтому вы можете найти более качественный текст. Или это должен быть модуль python с User-Agent из разных веб-браузеров, чтобы вы могли использовать разные значения в разные дни.

...