編集: 多くのことをいじった後、各ファイルの後に接続を閉じるように指示した場合でも、urllib2が失敗したところでurlgrabberが成功したようです。urllib2 がプロキシを処理する方法、または使用方法に問題があるようです。とにかく、ループ内でファイルを取得するための最も単純なコードは次のとおりです。
import urlgrabber
for i in range(1, 100):
url = "http://www.iana.org/domains/example/"
urlgrabber.urlgrab(url, proxies={'http':'http://<user>:<password>@<proxy url>:<proxy port>'}, keepalive=1, close_connection=1, throttle=0)
皆さんこんにちは !
urllib2 を介して多数のファイルを取得するための非常に単純な python スクリプトを作成しようとしています。
このスクリプトは、職場でプロキシを介して動作する必要があります (イントラネット上のファイルを取得する場合、つまりプロキシを使用しない場合、私の問題は存在しません)。
このスクリプトは、「HTTPError: HTTP エラー 401: 基本認証に失敗しました」といういくつかのリクエストの後に失敗します。なぜそれが考えられるのですか?プロキシが認証を拒否しているようですが、なぜですか? 最初の 2 つの urlopen リクエストは正しく処理されました。
編集: リクエスト間に 10 秒のスリープを追加して、プロキシによって行われる可能性のある何らかのスロットリングを回避しても、結果は変わりませんでした。
これは私のスクリプトの簡略化されたバージョンです(明らかに識別された情報は削除されています):
import urllib2
passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
passmgr.add_password(None, '<proxy url>:<proxy port>', '<my user name>', '<my password>')
authinfo = urllib2.ProxyBasicAuthHandler(passmgr)
proxy_support = urllib2.ProxyHandler({"http" : "<proxy http address>"})
opener = urllib2.build_opener(authinfo, proxy_support)
urllib2.install_opener(opener)
for i in range(100):
with open("e:/tmp/images/tst{}.htm".format(i), "w") as outfile:
f = urllib2.urlopen("http://www.iana.org/domains/example/")
outfile.write(f.read())
前もって感謝します !