2013-07-03 72 views
2

我查看了urllib的文檔,但我能在代理上找到的所有文檔都與urlopen相關。但是,我想從給定的URL下載PDF並將其存儲在本地,但使用某個代理服務器。我的方法至今沒有工作:Python urllib urlretrieve代理

import urllib2 

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

的錯誤是AttributeError: FancyURLopener instance has no attribute 'urlretrieve'

回答

4

我beleive你可以做這樣的事情:

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() 

因爲urllib2可是沒有urlretrieve 你可以使用urlopen來獲得同樣的效果

你肯定有我的文檔困惑因爲urllib2也沒有FancyURLopener那就是爲什麼你會得到錯誤

urllib2處理代理時和這樣

更多信息請看這裏Urllib2 Docs

+0

我只是檢查'urllib2.urlopen(URL,文件名)'要好得多。這不起作用,因爲它不下載並存儲給定文件名的PDF。 – orschiro

+0

檢查編輯我認爲應該工作 – Serial

+0

確實如此。謝謝! – orschiro

1

你有正確的想法,你只是缺少一些things

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