0

Python Mechanize を使用して Web サイトを取得し、ローカル ディスクに保存しようとしています。問題は、多くの Web サイトが html/asp/php 以外のリンクにリダイレクトすることです。URL の拡張子と取得するファイルの種類を正確に検出する方法はありますか?

たとえば、 http ://www.yahoo.com は html ファイルとして保存する必要があります。

http://www.microsoft.com/en-us/download/confirmation.aspx?id=3745 は、リダイレクトしてから exe ファイルをダウンロードするため、.exe ファイルとして保存する必要があります。ただし、コンテンツタイプは text/html として宣言されているため、最も信頼できる方法ではないと思います。

ファイルを保存するときにブラウザが行うように、ファイル拡張子を正確に検出するにはどうすればよいですか?

ありがとうございます

4

1 に答える 1

1

http://www.microsoft.com/en-us/download/confirmation.aspx?id=3745 は、リダイレクトしてから exe ファイルをダウンロードするため、.exe ファイルとして保存する必要があります。ただし、コンテンツタイプは text/html として宣言されているため、最も信頼できる方法ではないと思います。

それはあまり正しくありません。HTTP リダイレクトを使用しません。問題は、Microsoft が JavaScript を使用してブラウザにファイルをダウンロードさせることです。実際のファイルは次のとおりです。

http://download.microsoft.com/download/4/4/9/449b0038-ac27-4b24-bf11-dd8ebdf5cca6/sonar_setup.exe

mechanize は JavaScript を実行できないため、html ファイルと javascript ファイルを解析してリンクを取得する必要があります。同じ方法でファイルをダウンロードする 1 つのサイトのみをスクレイピングする場合、これは合理的かもしれません。一般的な方法を探している場合は、まったく別の方法を見つける必要があります。

ダウンロードしたファイルが何であるかをブラウザが知る唯一の方法は次のとおりです。

  1. コンテンツ タイプを確認する
  2. パスの拡張子を確認してください (ブラウザが 2 を実行するかどうかはわかりません)。
于 2013-07-11T04:14:57.530 に答える