在Ruby中搜索/解析Google搜索结果

时间:2009-10-08 19:00:51

标签: ruby google-search google-search-api

假设我拥有Google搜索结果页的整个HTML。有没有人知道任何现有的代码(Ruby?)来搜索/解析Google搜索结果的第一页?理想情况下,它可以处理可以在任何地方出现的购物结果和视频结果部分。

如果没有,那么一般来说,最好的基于Ruby的屏幕抓取工具是什么?

澄清:我知道以编程方式/ API方式获取Google搜索结果很困难/不可能而且简单地说CURLing结果页面存在很多问题。这里有关于stackoverflow的这两点的共识。我的问题不同。

6 个答案:

答案 0 :(得分:10)

这应该是非常简单的事情,看看Ryan Bates的Screen Scraping with ScrAPI投影。你仍然可以不用抓住libs,只需坚持像nokogiri这样的简单事情。

<强>更新

来自nokogiri的documentation

  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

答案 1 :(得分:4)

我不清楚为什么你想要首先进行屏幕抓取。也许REST搜索API会更合适?它将以JSON格式返回结果,这将更容易解析,并节省带宽。例如,如果您的搜索是“foo bar”,则可以向http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=foo+bar发送GET请求并处理响应。

有关详细信息,请参阅此blog postofficial documentation

答案 2 :(得分:1)

我建议使用httparty + google ajax search api

答案 3 :(得分:0)

您应该可以使用Mechanize轻松完成目标。

修改:实际上,如果您已经有了结果,那么您只需HPricotNokogiri

答案 4 :(得分:0)

我不知道特定于Ruby的代码,但 google scraper 可以帮助您。这是一个在线工具演示,可以搜索和解析Google搜索结果。最有趣的是那里的文章,解释了PHP中的解析过程,但它适用于Ruby和任何其他编程语言。

答案 5 :(得分:0)

随着Google不断变化,同时扩展结果的结构(丰富的片段,知识图,直接答案等),报废变得越来越难,我们构建了一个处理这种复杂性的部分服务,我们确实有{ {3}}。它非常简单易用:

query = GoogleSearchResults.new q: "coffee"

# Parsed Google results into a Ruby hash
hash_results = query.get_hash