您的URL返回403代码错误,显然urllib.request.urlretrieve不善于检测所有HTTP错误,因为它正在使用,
urllib.request.FancyURLopener并且这是最新尝试通过返回a
urlinfo而不是引发错误来吞噬错误。
关于此修复程序,如果您仍然想使用urlretrieve,则可以像这样覆盖FancyURLopener(随附的代码也可以显示错误):
import urllib.requestfrom urllib.request import FancyURLopenerclass FixFancyURLOpener(FancyURLopener): def http_error_default(self, url, fp, errpre, errmsg, headers): if errpre == 403: raise ValueError("403") return super(FixFancyURLOpener, self).http_error_default( url, fp, errpre, errmsg, headers )# Monkey Patchurllib.request.FancyURLopener = FixFancyURLOpenerurl = "http://scholar.google.com/scholar.bib?q=info:K7uZdMSvdQ0J:scholar.google.com/&output=citation&hl=en&as_sdt=1,14&ct=citation&cd=0"urllib.request.urlretrieve(url, "cite0.bib")
否则,这是 我建议
您可以
urllib.request.urlopen像这样使用的:
fp = urllib.request.urlopen('http://scholar.google.com/scholar.bib?q=info:K7uZdMSvdQ0J:scholar.google.com/&output=citation&hl=en&as_sdt=1,14&ct=citation&cd=0')with open("citi0.bib", "w") as fo: fo.write(fp.read())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)