>我正在尝试获取一个页面,urlopen挂起并且从不返回任何内容,尽管该网页非常轻巧,可以用任何浏览器打开没有任何问题
import urllib.request
with urllib.request.urlopen("http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Lei/L11882.htm") as response:
print(response.read())
这个简单的代码在检索响应时会冻结,但是如果您尝试打开 http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Lei/L11882.htm 它会毫无问题地打开
www.planalto.gov.br 正在使用用户代理检测。如果指定有效的用户代理,则请求将正确完成。urllib 库没有崩溃,它只是在等待。
curl -H "User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Lei/L11882.htm
对我来说工作得很好,但是
curl http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Lei/L11882.htm
冇。
就像上面说的 RPGillespie 一样,使用 urllib2 或请求添加用户代理标头(有关更多信息,请参阅如何使用 python 的 urllib 设置标头?(。