【问题标题】:Python urllib urlretrieve behind proxyPython urllib urlretrieve 在代理后面
【发布时间】:2013-07-03 13:53:06
【问题描述】:

我查看了 urllib 的文档,但我能在代理上找到的所有内容都与 urlopen 有关。但是,我想从给定的 URL 下载 PDF 并将其存储在本地,但使用某个代理服务器。到目前为止我的方法不起作用:

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'

【问题讨论】:

    标签: python urllib2


    【解决方案1】:

    我相信你可以这样做:

    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

    【讨论】:

    • 我刚刚检查了urllib2.urlopen(URL, filename)。这不起作用,因为它不会下载和存储给定文件名的 PDF。
    • 我用这个下载的所有gz文件都损坏了,当我使用谷歌浏览器时没有
    【解决方案2】:

    您的想法是正确的,您只是缺少了一些things

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      相关资源
      最近更新 更多