Webクローリング/スクレイピング - ビルドまたは購入?

現時点では、プロセスが一般的なように見えるので、単一のツールが支配的に上昇していると思われます。開始URLを指し、フォームとスクリプトと相互作用し、リンクに従ってデータをダウンロードします。リンス、繰り返します。私はいつもハードドライブ上に数百ギガの文書を手に入れるために特別なアプリケーションを構築することで一定の満足感を得ていますが、私は単にホイールを作り直すだけではないのだろうかと思います。

私は、Automation Anywhereのような商用製品を試していないことを告白していますが、私が本当に好きなことを全面的にやり遂げようとしているので、データを取得するのではなく分析しています。私は群衆の知恵を期待していますここで私は決定的な議論の方向に向けることができます。単一のツールでほぼすべての状況に対応するには、あまりにも多くの欠点がありますか?

そして私にこれを明確にしたり複雑にさせてもらいましょう - 私はiRobot、iOpusのようなブラウザの "マクロ"タイプのツールを見て、それらが遅いことを発見しました。真剣に大規模なドキュメントのコレクションについては、私はクラスタ/クラウド上でクローラを実行したいので、これらの環境でどのように動作するのか分かりません。私の使用例では、

  • 約100万件のドキュメントを検索
  • ログインする必要はないが、javascriptを利用してナビゲートするサイトから。
  • AmazonまたはAzureサーバーを使用して作業を行います。

例として、米国国勢調査のこのサイト(データを取得するより効率的な方法がありますが、サイトのスタイルはデータ量とナビゲーションの良い例です):

http://factfinder2.census.gov/faces/nav/jsf/pages/searchresults.xhtml?ref=addr&refresh=t

4

2 答え

Apache Nutch is a very powerful crawler:

もちろん、それはJavaで書かれていますが、C#に精通していれば、Javaはそれほど異質ではありません。一部の人々はNutchの複雑さに懸念を表明していますが、深刻なクロールを行っている人にとっては、同様のWebクローラーを作成するよりもNutchの警告を学ぶ方がはるかに簡単になります。

2
追加された

ソフトウェア世界ではやや灰色の領域になる傾向があるため、このようなツールは遅く出現するようです。

ヘッドレスブラウザ(iRobotやiOpusなど)を使った自動サイトテストなど、同様の分野で重要な作業が行われています。 Seleniumにはあまり言及されていませんが、 phantomjs のようなApple Webkitを使って興味深いツールがいくつかありますが、彼らのスピードや「雲の能力」についてコメントしてはいけません。

最近、重要な牽引力を獲得している興味深いオプションは、 node.js のjavascriptランタイムです。私が最後にチェックしたのは(6ヶ月前)、非常に軽量なjavascript-interpretingブラウザを実装して、ノードを使用して掻き集めるためのいくつかのプロジェクトがありました。 ...そして、クラウドのノードオプションがすでにあると思います。

しかし、AFAIKは、最も速いスクレイパーで、まだjavascriptを解釈しないものであり、開発者がhttpリクエストを古くから分解しているものに依存しています。

2
追加された