假设我有一个谷歌搜索结果页面的完整的HTML。 有谁知道的任何现有代码(红宝石?)凑/解析的谷歌搜索结果的第一页? 理想的情况下,将手柄的购物结果和视频结果可以在任何地方冒出来的部分。
如果没有,什么是对一般屏幕抓取最好的基于Ruby的工具?
为了澄清:我知道,这是很难/不可能得到谷歌的搜索结果编程/ API明智的,简单地卷曲搜索结果页面有很多的问题。 有两个在这里计算器这些点的concensus。 我的问题是不同的。
假设我有一个谷歌搜索结果页面的完整的HTML。 有谁知道的任何现有代码(红宝石?)凑/解析的谷歌搜索结果的第一页? 理想的情况下,将手柄的购物结果和视频结果可以在任何地方冒出来的部分。
如果没有,什么是对一般屏幕抓取最好的基于Ruby的工具?
为了澄清:我知道,这是很难/不可能得到谷歌的搜索结果编程/ API明智的,简单地卷曲搜索结果页面有很多的问题。 有两个在这里计算器这些点的concensus。 我的问题是不同的。
这应该是很简单的事情,看看屏幕采用ScrAPI刮由Ryan贝茨投屏幕。 你仍然可以不用刮库,只是坚持喜欢简单的东西引入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
我不清楚为什么你想成为摆在首位屏幕抓取。 也许REST搜索API会更合适? 它将返回JSON格式的结果,这将是更容易解析,并节省带宽。 例如,如果你的搜索是“富酒吧”,你可以只发送一个GET请求到http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=foo+bar和处理响应。
欲了解更多信息,请参阅本博客文章或官方文件 。
我建议httparty +谷歌AJAX搜索API
你应该能够很容易地与完成你的目标机械化 。
编辑:其实,如果你已经有了结果,你需要的是角度来说,Hpricot或引入nokogiri 。
我不知道具体的Ruby代码,但这个谷歌刮刀可以帮助你。 这是一个在线工具,演示,工程刮解析谷歌的结果。 最有趣的事情是,在PHP解析过程的说明文章有,但它是适用于Ruby和其他编程语言。
刮痧已成为难当谷歌保持,同时扩大,结果是如何变化的结构(丰富网页摘要,知识图,直接回答,等等),我们建立了处理这种复杂的部分服务,我们确实有一个Ruby库 。 这是非常简单的使用方法:
query = GoogleSearchResults.new q: "coffee"
# Parsed Google results into a Ruby hash
hash_results = query.get_hash