2

私は、オンラインにある数万ページの政府データ (数千のフォルダーにある) を集めて、すべてを 1 つのファイルにまとめたいと考えています。プロセスを高速化するために、まずサイトをハード ドライブにダウンロードしてから、アネモネ + ノコギリなどでクロールすることにしました。政府サイトのオンライン URL でサンプル コードを試したところ、すべて正常に動作しましたが、URL をローカル ファイル パスに変更すると、コードは実行されますが、何も出力されません。コードは次のとおりです。

url="file:///C:/2011/index.html"

Anemone.crawl(url) do |anemone|
  titles = []
  anemone.on_every_page { |page| titles.push page.doc.at

('title').inner_html rescue nil }
  anemone.after_crawl { puts titles.compact }
end

そのため、ローカル ファイル名では何も出力されませんが、対応するオンライン URL をプラグインすると正常に動作します。Anemone はどうにかしてローカル ディレクトリ構造をクロールできませんか? そうでない場合、このクロール/スクレイピングを行うための他の提案された方法はありますか?それとも、サイトのオンライン バージョンで Anemone を実行するだけでよいでしょうか? ありがとう。

4

1 に答える 1

1

このアプローチにはいくつかの問題があります

  1. アネモネは、Web アドレスが http 要求を発行することを期待しており、ファイルを渡しています。代わりに nokogiri を使用してファイルをロードし、それを解析することができます

  2. ファイルのリンクは、相対パスではなく完全な URL である可能性があります。この場合でも、http 要求を発行する必要があります。

あなたができることは、nokogiriを使用してそれらをトラバースし、Nokogiriが次にロードするためにリンクをローカルパスに変換するよりも、ファイルをローカルにダウンロードすることです

于 2012-05-31T17:44:52.860 に答える