[英]Urlretrieve and User-Agent? - Python
我正在使用 urllib 模块中的 urlretrieve。
我似乎找不到如何向我的请求添加用户代理描述。
可以使用 urlretrieve 吗? 还是我需要使用其他方法?
首先,设置版本:
urllib.URLopener.version = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0'
然后:
filename, headers = urllib.urlretrieve(url)
您可以使用 URLopener 或 FancyURLopener 类。 'version' 参数指定 opener 对象的用户代理。
opener = FancyURLopener({})
opener.version = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.69 Safari/537.36'
opener.retrieve('http://example.com', 'index.html')
我知道这个问题已经存在 7 年了。 我通过尝试弄清楚如何在使用urlretrieve
函数时更改User-Agent
来urlretrieve
这个问题。
对于任何不走运就解决此问题的人,我是这样做的:
# proxy = ProxyHandler({'http': 'http://192.168.1.31:8888'})
proxy = ProxyHandler({})
opener = build_opener(proxy)
opener.addheaders = [('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30')]
install_opener(opener)
result = urlretrieve(url=file_url, filename=file_name)
我加proxy的原因是为了监控Charles里面的流量,这里是我得到的流量:
我认为 urlretrieve 不可能 - 至少不容易。 我建议创建一个 urllib2.Request 对象并将所需的标头传递给它。 看
http://docs.python.org/library/urllib2.html#urllib2.urlopen
举些例子。
像这样的东西不使用 urllib tho,为我工作了一个刮刀
import requests
imageURL='http://image.jpg'
headers={'user-agent': 'Mozilla/5.0'}
r=requests.get(imageURL, headers=headers)
with open('image.jpg', 'wb') as f:
f.write(r.content)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.