Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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/17.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
Python URL存在时,urllib2捕获404错误_Python_Python 3.x_Http_Http Status Code 404_Urllib2 - Fatal编程技术网

Python URL存在时,urllib2捕获404错误

Python URL存在时,urllib2捕获404错误,python,python-3.x,http,http-status-code-404,urllib2,Python,Python 3.x,Http,Http Status Code 404,Urllib2,我遇到了一个奇怪的错误:urllib2在打开一个有效的url时捕捉到404错误。我在浏览器中尝试过,url可以打开。我还通过了用户代理 import urllib.request as urllib2 uri = 'https://i.ytimg.com/vi/8Sii8G5CNvY/hqdefault.jpg?custom=true&w=196&h=110&stc=true&jpg444=true&jpgq=90&sp=68&sigh=O

我遇到了一个奇怪的错误:urllib2在打开一个有效的url时捕捉到404错误。我在浏览器中尝试过,url可以打开。我还通过了用户代理

import urllib.request as urllib2
uri = 'https://i.ytimg.com/vi/8Sii8G5CNvY/hqdefault.jpg?custom=true&w=196&h=110&stc=true&jpg444=true&jpgq=90&sp=68&sigh=OIIIAPOKNtx1OiZbAqdORlzl92g'
try:
  req = urllib2.Request(uri, headers={ 'User-Agent': 'Mozilla/5.0' })
  file = urllib2.urlopen(req)
except urllib2.HTTPError as err:
  if err.code == 404:
    return "Not Found"

为什么我会犯这个错误?谢谢您的回答。

如果您仍然想获取正文,只需使用
err.read()读取错误响应即可。


好的,如果您在一些高级HTTP客户机上测试uri,或者打开web浏览器的开发控制台,它会抛出404错误。似乎工作正常。您尝试访问的服务器行为异常:它以404响应,后跟实际文件。命令行工具
wget
也无法获取文档,但是
curl
获取文档。你的代码没有问题,显然
urllib2
不是为处理这种情况而设计的。但是如果是404错误,我怎么能下载它呢?我可以只做data=file.read(1024)吗?
import urllib2
uri = 'https://i.ytimg.com/vi/8Sii8G5CNvY/hqdefault.jpg?custom=true&w=196&h=110&stc=true&jpg444=true&jpgq=90&sp=68&sigh=OIIIAPOKNtx1OiZbAqdORlzl92g'
try:
  req = urllib2.Request(uri, headers={ 'User-Agent': 'Mozilla/5.0' })
  file = urllib2.urlopen(req)
except urllib2.HTTPError as err:
  if err.code == 404:
    print "Not Found"
    print err.read()