4

Google検索結果ページのHTML全体を持っていると仮定します。Google検索結果の最初のページをスクレイプ/解析するための既存のコード(Ruby?)を知っている人はいますか?理想的には、どこにでも出現する可能性のあるショッピング結果とビデオ結果のセクションを処理します。

そうでない場合、一般的にスクリーンスクレイピングに最適なRubyベースのツールは何ですか?

明確にするために:私は、Googleの検索結果をプログラム的に/ API的に取得することは困難/不可能であり、単に結果ページをCURLすることには多くの問題があることを認識しています。ここスタックオーバーフローについては、これらの両方の点についてコンセンサスがあります。私の質問は違います。

4

6 に答える 6

9

これは非常に単純なことです。ライアン・ベイツがキャストした「ScrAPIを使用した画面スクレイピング」画面をご覧ください。ライブラリをスクレイピングせずに、Nokogiriのようなものに固執するだけでまだできます。


Nokogiriのドキュメントから:

require 'nokogiri'
require 'open-uri'

# Get a Nokogiri::HTML:Document for the page we’re interested in...

doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))

# Do funky things with it using Nokogiri::XML::Node methods...

####
# Search for nodes by css
doc.css('h3.r a.l').each do |link|
  puts link.content
end

####
# Search for nodes by xpath
doc.xpath('//h3/a[@class="l"]').each do |link|
  puts link.content
end

####
# Or mix and match.
doc.search('h3.r a.l', '//h3/a[@class="l"]').each do |link|
  puts link.content
end
于 2009-10-08T19:06:05.853 に答える
3

そもそもなぜスクリーンスクレイピングをしたいのかわかりません。おそらく、REST検索APIの方が適切でしょうか?結果はJSON形式で返されます。これにより、解析がはるかに簡単になり、帯域幅を節約できます。

たとえば、検索が「foo bar」の場合、GETリクエストをに送信しhttp://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=foo+barてレスポンスを処理するだけで済みます。

詳細については、「GoogleSearchRESTAPI」または Googleの開発者ページを参照してください。

于 2009-10-08T19:36:49.380 に答える
0

I would suggest HTTParty + Google's Ajax search API.

于 2010-05-08T10:17:35.960 に答える
-1

Mechanizeを使用すると、目標を簡単に達成できるはずです。

すでに結果が出ている場合、必要なのはHpricotまたはNokogiriだけです。

于 2009-10-08T19:06:08.300 に答える
-1

Ruby 固有のコードはわかりませんが、このGoogle スクレーパーが役に立ちます。これは、Google の結果をスクレイピングして解析するオンライン ツールのデモです。最も興味深いのは、PHP での解析プロセスの説明が記載された記事ですが、Ruby やその他のプログラミング言語に適用できます。

于 2011-09-16T17:54:44.773 に答える