我有一个使用MechanicalSoup StatefulBrowser打开以前工作的StatefulBrowser的Python脚本。但它最近停止了工作,打开了一个特定的网站,我没有改变任何代码。
我试着打开其他网站,没问题。这是无法打开的特定网站: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 ...谢谢。
发布于 2019-07-09 03:23:34
许多门户如果有错误的标题“用户代理”,就会阻塞连接,从而通知服务器使用什么web浏览器进行连接。
Python的工具(如requests)通常在User-Agent中使用word Python,这样服务器就可以识别它不是真正的web浏览器和阻塞连接。
如果我使用文本"Mozilla/5.0"作为User-Agent,那么我可以再次连接
browser = mechanicalsoup.StatefulBrowser()
browser.set_user_agent('Mozilla/5.0')文本"Mozilla/5.0"不是阅读网页浏览器使用的全文,所以你可以找到更好的文本。或者它应该是python的模块,它包含来自不同web浏览器的用户代理,这样您就可以在不同的日子里使用不同的值。
https://stackoverflow.com/questions/56944716
复制相似问题