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

在Ruby中抓取/解析Google搜索结果,ruby,google-search,google-search-api,Ruby,Google Search,Google Search Api,假设我拥有Google搜索结果页面的整个HTML。有人知道任何现有的代码(Ruby?)来抓取/解析谷歌搜索结果的第一页吗?理想情况下,它将处理购物结果和视频结果部分,可以在任何地方出现 如果不是,一般来说,什么是最好的基于Ruby的屏幕抓取工具 澄清一下:我知道很难/不可能通过编程/API方式获得Google搜索结果,简单地卷曲结果页面有很多问题。这两点在stackoverflow上都有共识。我的问题不同。这应该是非常简单的事情,看看Ryan Bates的“”屏幕。您仍然可以不必删除库,只需坚持

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

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


澄清一下:我知道很难/不可能通过编程/API方式获得Google搜索结果,简单地卷曲结果页面有很多问题。这两点在stackoverflow上都有共识。我的问题不同。

这应该是非常简单的事情,看看Ryan Bates的“”屏幕。您仍然可以不必删除库,只需坚持这样做


来自Nokogiri的:


你应该能够轻松地完成你的目标


如果你已经有了结果,那么你所需要的就是或。

我不清楚你为什么首先要做屏幕抓取。也许REST搜索API更合适?它将以JSON格式返回结果,这将更容易解析,并节省带宽

例如,如果您的搜索是“foobar”,那么您可以向发送一个GET请求并处理响应


有关更多信息,请参阅“”或。

我建议使用HTTParty+Google的Ajax搜索API。

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

随着谷歌在扩展结果结构(丰富片段、知识图、直接答案等)的同时不断变化,放弃变得越来越难,我们构建了一个服务来处理这种复杂性的一部分,我们确实有一个解决方案。它的使用非常简单:

query = GoogleSearchResults.new q: "coffee"

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

不客气!请看我的更新:如果您已经有了结果,那么Mechanize可能有点过头了。Hpricot不再受支持,所以不要去那里。Nokogiri还活着,而且很好,确实支持Hpricot的语法,但不要使用它,请使用cheet sheet和教程中演示的正常Nokogiri语法。不幸的是,由于谷歌使用DHTML处理越来越多的页面,因此刮取比以前更加困难。而是使用“”。它不会返回相同的结果。请参阅:“Google Web搜索API不再可用,请改为“使用”。我建议查看Google排名检查器()。它不是ruby,而是用PHP编写的。但它是开源的,可以解决您需要的所有任务。您似乎对ruby并没有真正的了解,我个人曾在许多这样的项目(也在生产环境中)中使用过PHP(控制台脚本)。无论如何,即使您使用ruby编写代码,您也会发现PHP代码非常有用,因为在抓取Google时,某些任务可能非常棘手(延迟、IPs、DOM解析、发送正确的GET参数等)。这是一个老问题,因此任何使用它来证明使用抓取而不是Google的API的合理性的人都需要重新思考他们的逻辑。使用API,这就是它的用途。使用“”代替。您可以执行
link['href']
来获取链接的href;)。Ryan有两个截取上面提到的ScrAPI上的截图的屏幕广播,其中使用的代码与此答案中的代码更为相似。谷歌似乎改变了页面布局,此代码不再工作。此时,它只是显示了要解决的无休止的验证码列表。这似乎要求你向谷歌支付SERP API密钥的费用。使用“”相反,正如书面所写,这几乎不是一个答案。指向适当的页面,用一些代码示例说明为什么它是一个可用的答案。
query = GoogleSearchResults.new q: "coffee"

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