Ruby + OpenURI + Nokogiriを使用してサイトをクロールしています。ページを取得し、すべてのa[href]
と(同じドメインと正しいプロトコルにいる場合)それらをフォローして、再びクロールします。MIMEタイプに基づいたX/HTMLリンク(画像ではない)のみを取得する
大きなバイナリ(例:jpeg、exe)へのリンクがあり、それらをクロールしたくない場合があります。
私はそうのような間違ったMIMEタイプのエラーまたは空の応答を取得するためにHTTP "Accept" headerを使用してみました:
require 'open-uri'
page = open(url, 'Accept'=>'text/html,application/xhtml+xml,application/xml')
を...しかしOpenURIは別のMIMEタイプで送信されたバイナリをダウンロードします。 可能性ファイルタイプのURLにあるファイルの拡張子を見ている以外
、はどのように私は、任意のURLのために(または競合する応答タイプを検出)、ダウンロードを防ぐことができますか?
HEADリクエストは移動方法です。サーバーがファイルの種類を見つけられない、または嘘をつくように指示されている場合でも、それは完全に間違っている可能性がありますが、依然として最良の選択です。 –
これはうまくいくように見えますが、URLの拡張機能をテストするだけの場合と比較して、パフォーマンスが低下するのはサーバーが遅い場合です。私は正しい答えだから受け入れますが、残念ながら私は使用できません。ありがとう。 – Phrogz