URL 存在时 urllib2 捕获 404 错误

urllib2 catches 404 error while URL exists

我遇到了一个奇怪的错误: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():

的错误响应
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()