0

我有一个 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 得到的输出,它按预期打开。但是第二个链接只是挂起。

有什么帮助吗?或者,如果有人知道联系 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 ...

谢谢你。

4

1 回答 1

0

许多门户网站如果有错误的标题“User-Agent”会阻止连接,该标题会通知服务器用于连接的 Web 浏览器。

Python 的工具(如requests)经常使用 word PythoninUser-Agent以便服务器可以识别它不是真正的 Web 浏览器并阻止连接。

如果我使用文本"Mozilla/5.0"User-Agent那么我可以再次连接

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

文本"Mozilla/5.0"不是阅读网络浏览器使用的全文,因此您可以找到更好的文本。或者它应该是来自不同网络浏览器的带有 User-Agent 的 python 模块,这样你就可以在不同的日子使用不同的值。

于 2019-07-09T03:23:34.680 回答