我有一个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 ...
谢谢。
答案 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模块,因此您可以在不同的日子使用不同的值。