MechanicalSoup StatefulBrowser:无法打开 URL

MechanicalSoup StatefulBrowser: Unable to Open URL

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

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

谢谢。

如果有错误,许多门户网站会阻止连接 header "User-Agent" 通知服务器使用什么 Web 浏览器进行连接。

Python 的工具(如 requests)经常在 User-Agent 中使用单词 Python,因此服务器可以识别它不是真正的网络浏览器并阻止连接。

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

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

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