繁体   English   中英

如何在Python 3中检索带有User-Agent标头的文件?

[英]How can I retrieve files with User-Agent headers in Python 3?

我正在尝试编写一段(简单的)代码以从Internet下载文件。 问题是,其中一些文件位于阻止默认python User-Agent标头的网站上。 例如:

import urllib.request as html
html.urlretrieve('http://stackoverflow.com', 'index.html')

回报

urllib.error.HTTPError: HTTP Error 403: Forbidden`

通常,我会在请求中设置标头,例如:

import urllib.request as html
request = html.Request('http://stackoverflow.com', headers={"User-Agent":"Firefox"})
response = html.urlopen(request)

但是,由于某种原因urlretrieve无法处理请求,因此这不是一种选择。

是否有任何简单的解决方案(不包括导入请求之类的库)? 我注意到urlretrieve是从Python 2发布的旧版接口的一部分,是否应该代替我使用?

我尝试创建一个自定义的FancyURLopener类来处理检索文件,但这引起的问题比解决的问题多,例如为404链接创建空文件。

您可以将URLopener子类URLopener ,并将version类变量设置为其他用户代理,然后继续使用urlretrieve。

或者,您可以仅使用第二种方法,仅在检查code == 200之后将响应保存到文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM