私はこれを行う方法がわかりません。一つの方法は次のとおりです。Pythonはファイルをダウンロードします
import urllib.request;
urllib.request.urlretrieve('www.example.com/file.tar', 'file.tar')
もう一つの方法は、次のようになります。
import urllib.request;
#Set as appropriate
userAgent = ....;
req = urllib.request.Request('www.example.com/file.tar', headers={'User-Agent' : userAgent});
response = urllib.request.urlopen(req);
#Save the file
f = open('file.tar', 'wb');
f.write(response.read());
f.close()
私が使用する方法をわかりません。私はループ内に多くのファイル(パターンファイル名で)をダウンロードします。しかし、私はユーザーエージェントヘッダーを設定できるようにしたいと思います。それは重要ではありませんが、私はしたいと思います。
編集:私は最初の方法が好きだが、urlretrieveでユーザーエージェントヘッダーを設定する方法がわからないことを忘れてしまった。
私は、答えに...あなたの第二の例はかなりカスタムヘッダーとリクエスト・オブジェクトを作成し、その後に結果を読んで、それが必要なものをコメントとして開始するもの動いてやっているのです
私は理解しません。ヘッダーをカスタマイズしたい場合は、2番目の方法で何が問題になりますか?それは動作しませんか? – jdi
それは動作しますが、私はurllib.request.urlretrieveが次に使用されていることを確信していますか?また、各反復で応答オブジェクトを作成する必要があります(ループに入れる場合に備えて)。コードもかなり長くなっていますので、urlretrieveを使用してヘッダを設定する方法が必要だと思いました。結局、urlretrieveは多くの行を保存します。 – s5s
'urlretrieve'はドキュメントが言っているとおりです:ネットワークリソースをローカルファイルに単純にコピーするために使用される上位レベルの関数です。ヘッダーのように多くの制御を得ることはできません。そのため、要求オブジェクトにドロップダウンする必要があります。あなたは 'urlretrieve'の手作業をしているので、もう少し行が必要です。 – jdi