2011-05-16 60 views
6

我需要幫助從Google搜索結果中拉取網址,並被告知要使用Nokogiri。我安裝了它並閱讀了Nokogiri文檔,但不知道從哪裏開始 - 這對我來說都是希臘文。如何使用Nokogiri解析Google搜索結果?

我知道我要找的是每個結果的URL,每個結果都存在於<cite>標記之間。到目前爲止,我能夠弄清楚如何做的是拉取搜索結果,但我不知道如何去從文件中提取特定的數據。這是我做的代碼的蠅頭-點點:

serp = Nokogiri::HTML(open("http://www.google.com/search?num=100&q=stackoverflow")) 
+1

調查引入nokogiri的使用CSS存取的。他們非常強大,可以幫助你快速轉身。從那裏你需要挖掘XPath,因爲這是我們經常追隨節點的方式,無論它們是HTML還是XML。 XPath比CSS強大得多,但這種功能增加了複雜性。另外,作爲一個可用性提示,'at'發現第一個出現的東西是'Node',而'search'找到所有出現的東西,返回'NodeSet'。 NodeSet就像一個節點數組,所以你可以迭代它。 – 2011-05-17 15:17:57

回答

10

享受:)

require 'open-uri' 
require 'nokogiri' 

page = open "http://www.google.com/search?num=100&q=stackoverflow" 
html = Nokogiri::HTML page 

html.search("cite").each do |cite| 
    puts cite.inner_text 
end 

還看nokogiri tutorials

+0

不要重振舊帖子,但是您知道是否有現代方式來控制Google搜索結果的數量? num查詢字符串不再有效。 – 2013-05-17 14:43:28

+0

@DaveLong它適用於我,但我認爲有100個結果的硬性限制 – makevoid 2014-03-05 23:54:12

+0

這似乎不再工作,谷歌不喜歡野外解析 – 2015-04-04 15:54:37