web-dev-qa-db-ja.com

urllib.request.urlretrieve with proxy?

どういうわけか、プロキシサーバーを介してファイルをダウンロードできません。また、何が悪いのかわかりません。タイムアウトになるだけです。何かアドバイス?

import urllib.request

urllib.request.ProxyHandler({"http" : "myproxy:123"})
urllib.request.urlretrieve("http://myfile", "file.file")
11
capitalg

インスタンス化するだけでなく、プロキシオブジェクトを使用する必要があります(オブジェクトを作成しましたが、変数に割り当てていないため、使用できません)。このパターンを使用してみてください:

#create the object, assign it to a variable
proxy = urllib.request.ProxyHandler({'http': '127.0.0.1'})
# construct a new opener using your proxy settings
opener = urllib.request.build_opener(proxy)
# install the openen on the module-level
urllib.request.install_opener(opener)
# make a request
urllib.request.urlretrieve('http://www.google.com')

または、std-libに依存する必要がない場合は、リクエストを使用します(このコードは公式ドキュメントからのものです)。

import requests

proxies = {"http": "http://10.10.1.10:3128",
           "https": "http://10.10.1.10:1080"}

requests.get("http://example.org", proxies=proxies)
25
dorvak