4

Web サイトからファイルをダウンロードする (しようとする) ために urllib2 を使用しています。ファイルは、いくつかのフォーム フィールドを指定した後にのみダウンロードできます。次のように、リクエストを作成して問題なくレスポンスを取得できます。

req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)

このような応答ヘッダーprint response.info()['Content-Disposition']を見ると、そこにファイルが表示されます。つまり、次のようなものが出力されますattachment;filename=myfile.txt

しかし、実際に添付ファイルをダウンロードするにはどうすればよいですか? その場合response.read()、url にあるページの HTML を含む文字列を取得するだけです。ポイントは、url はファイルではなく、「添付ファイル」を含む Web ページであり、その添付ファイルを urllib2 でダウンロードしようとしているということです。添付ファイルは動的に生成されるため、サーバー上にあるだけではありません。

4

1 に答える 1

2

問題は、必要なすべてのヘッダーを送信していなかったことです。特に、リクエスト ヘッダーで正しい Cookie を送信することが重要でした。私は次のことをしました:

  1. Chromium (または Chrome) を開き、Ctrl+Shift+I を押して開発者ツールを開きます。
  2. 「ネットワーク」をクリック
  3. ファイルをダウンロードするページにアクセスします。
  4. 開発者ツールで新しく作成されたエントリをクリックし、[ヘッダー] をクリックします。ここで、送信する必要のあるヘッダーに関するすべての情報を取得しました。
于 2012-12-08T03:02:55.740 に答える