MechanicalSoup StatefulBrowser:无法打开URL

时间:2019-07-09 02:53:58

标签: python mechanicalsoup

我有一个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 ...

谢谢。

1 个答案:

答案 0 :(得分:0)

如果许多门户网站的标题“ User-Agent”错误,则会阻止连接,这些标题告知服务器使用什么Web浏览器进行连接。

Python的工具(例如Python)通常在User-Agent中使用单词"Mozilla/5.0",因此服务器可以识别出它不是真正的Web浏览器并阻止了连接。

如果我将文本User-Agent用作browser = mechanicalsoup.StatefulBrowser() browser.set_user_agent('Mozilla/5.0') ,则可以再次连接

"Mozilla/5.0"

文本build.gradle不是读取的Web浏览器使用的全文,因此您可以找到更好的文本。或者它应该是来自不同Web浏览器的带有User-Agent的python模块,因此您可以在不同的日子使用不同的值。