Python urllib urlretrieve behind proxy

*爱你&永不变心* 提交于 2019-12-24 00:58:55

问题


I looked into the documentation of urllib but all I could find on proxies was related to urlopen. However, I want to download a PDF from a given URL and store it locally but using a certain proxy server. My approach so far which did not work:

import urllib2

proxies = {'http': 'http://123.96.220.2:81'}
opener = urllib2.FancyURLopener(proxies)
download = opener.urlretrieve(URL, file_name)

The error is AttributeError: FancyURLopener instance has no attribute 'urlretrieve'


回答1:


I beleive you can do something like this:

import urllib2

proxy = urllib2.ProxyHandler({'http': '123.96.220.2:81'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)

with open('filename','wb') as f:
    f.write(urllib2.urlopen(URL).read())
    f.close()

since urllib2 doesnt have urlretrieve you can just use urlopen to get the same effect

you must have got the docs confused becuase urllib2 also doesnt have FancyURLopener thats why youre getting the error

urllib2 is much better when handling proxies and such

for more info look here Urllib2 Docs




回答2:


You've got the right idea you're just missing a few things.

proxy = urllib2.ProxyHandler({'http': '127.0.0.1'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')


来源:https://stackoverflow.com/questions/17449904/python-urllib-urlretrieve-behind-proxy

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!