Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonUrlLib使用特定URL冻结_Python_Python 3.x_Urllib_Urlopen - Fatal编程技术网

PythonUrlLib使用特定URL冻结

PythonUrlLib使用特定URL冻结,python,python-3.x,urllib,urlopen,Python,Python 3.x,Urllib,Urlopen,我正在尝试获取一个页面,但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()) 这个简单的代码在检索响应时会冻结,但是如果您尝试打

我正在尝试获取一个页面,但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())

这个简单的代码在检索响应时会冻结,但是如果您尝试打开它,它会毫无问题地打开

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或requests来添加用户代理头(有关详细信息,请参阅)。

一个选项是使用wireshark来查看python请求和浏览器请求之间的差异。第二个选项是尝试不同的命令行工具。您是否能够使用
curl
wget
提取数据?如果不是,则表示存在代理设置之类的环境问题。第三种选择是尝试
urllib
的替代方案,例如(作为一个长期使用python的用户,我强烈推荐它),顺便说一句,感谢您的评论,我能够同时执行
wget
curl
。我尝试使用请求,但它只是在试图解决类似问题时冻结了这个问题。cURL或浏览器可以很好地打开,但urlopen不能。然后我发现它只发生在wi-fi上,但在使用有线以太网插孔时工作正常。最终(我认为)连接的地址解析部分在使用wi-fi时尝试使用IPv6解析。禁用了wi-fi连接的IPv6(在Ubuntu上),urlopen在此之后工作正常。