私は自分で書くことを考えていますが、Rubyで書かれた優れたWebクローラーがそこにあるかどうか疑問に思っています。
本格的なWebクローラーがなければ、Webクローラーの構築に役立つ可能性のある宝石があれば便利です。質問のこの部分がいくつかの場所で触れられていることは知っていますが、Webクローラーの構築に適用できるgemのリストも素晴らしいリソースになります。
Webページをクロールしてコンテンツを抽出するためのRubyDSLであるwombatを構築しています。 githubでチェックしてください https://github.com/felipecsl/wombat
それはまだ初期段階ですが、基本的な機能ですでに機能しています。より多くのものが本当にすぐに追加されます。
私は自分の仕事のためにスパイダー、ページスクレーパー、サイトアナライザーを作成していましたが、それでも定期的に作成して、かゆみを掻き立てていました。
Rubyには、簡単にするための優れた宝石がいくつかあります。
OpenURI は単純なHTTPクライアントとしては優れていますが、より複雑なことをしたい場合や、複数のリクエストを同時に実行する必要がある場合に邪魔になる可能性があります。中程度から重い仕事については、 HTTPClient または Typhoeus with Hydra を参照することをお勧めします。 Curb はcURLライブラリを使用しているので良いですが、インターフェイスは私にはそれほど直感的ではありません。しかし、一見の価値があります。 HTTPclient も一見の価値がありますが、私は前述のものに傾倒しています。
注:OpenURIには、疑いを持たないプログラマーに影響を与える可能性のあるいくつかの欠陥と脆弱性があるため、やや不利になっています。 RestClient は非常に価値のある後継者です。
<a>
タグを排他的に検索する場合よりも多くの作業が発生します。さらに言えば、Mechanizeにはページ内のすべてのリンクを返す links
メソッドもありますが、それらをフィルタリングして、フォローするか無視するかを決定する必要があります。 。結局のところ、コードに適切なスパイダリングのエチケットを認識させる必要があります: Webクローラーを作成する際の重要な考慮事項は何ですか?
だからあなたは良いRubyベースの ウェブクローラーが欲しい ?
スパイダー または アネモネ を試してください。 RubyGemsのダウンロード数によると、どちらも確実に使用されています。
これまでのところ、他の答えはdetailedとhelpfulですが、質問にレーザーのように焦点を合わせていません。 Ruby Web用ライブラリクローラーを要求します)この区別は混乱する可能性があるようです: myを参照してください「クロールvs.ウェブスクレイピング?」への回答
ブリキの木こりの包括的な リスト は良いですが、私にとっては部分的に時代遅れです。
私の顧客が扱っているほとんどのWebサイトは、AJAX/Javascriptに大きく依存しています。私もWatir/watir-webdriver/Seleniumを数年使用していますが、そのDOMのものをレンダリングするために、バックエンドに非表示のWebブラウザーをロードする必要があるというオーバーヘッドは、実行可能ではありません。新しいコードの実行でこの目的のためにメモリ内の古いブラウザを再利用できるようにするための使用可能な「ブラウザセッションの再利用」はまだ実装されておらず、最終的にAPIレイヤーを上っていった可能性のあるチケットを撃墜します。 ( https://code.google.com/p/Selenium/issues/detail?id=18 を参照)**
https://rubygems.org/gems/phantomjs
これは、新しいプロジェクトを現在移行しているものであり、目に見えないXvfbメモリやCPUを大量に消費するWebブラウザを使用せずに必要なデータをレンダリングできるようにします。
**代替アプローチもうまくいきませんでした:
独自に作成したくない場合は、通常のWebクローラーを使用してください。そこには数十があります。
あなたがあなた自身を書きたいのなら、あなた自身を書きなさい。 Webクローラーは、厳密には複雑なアクティビティではなく、次のもので構成されます。
ああ、これは " RubyのWebクローラー "の複製のようです。