2011-05-16 13 views
6

मुझे Google खोज परिणामों से यूआरएल खींचने में मदद की ज़रूरत है और उसे नोकोगिरी का उपयोग करने के लिए कहा गया था। मैंने इसे स्थापित किया और नोकोगिरी दस्तावेज़ों पर पढ़ा, लेकिन मुझे नहीं पता कि कहां से शुरू करना है - यह मेरे लिए ग्रीक है।मैं नोकोगिरी के साथ Google खोज परिणामों का विश्लेषण कैसे करूं?

मुझे पता है कि मैं जो खोज रहा हूं वह प्रत्येक परिणाम का यूआरएल है, प्रत्येक <cite> टैग के बीच मौजूद है। अब तक मैं यह समझने में सक्षम था कि खोज परिणामों को कैसे खींचें, लेकिन मुझे नहीं पता कि फाइल से विशिष्ट डेटा खींचने के बारे में कैसे जाना है। यहाँ कोड का नन्हा-छोटे बिट मैं है है:

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

पर देखने सीएसएस accessors की Nokogiri के उपयोग की जांच। वे बहुत शक्तिशाली हैं और आपको जल्दी से रोलिंग करने में मदद कर सकते हैं। वहां से आपको XPath में खोदने की आवश्यकता होगी, इस तरह हम अक्सर नोड्स के बाद जाते हैं, भले ही वे HTML या XML में हों। XPath सीएसएस की तुलना में बहुत अधिक शक्तिशाली है, लेकिन वह शक्ति अतिरिक्त जटिलता के साथ आता है। इसके अलावा, एक प्रयोज्य टिप के रूप में, 'ए'' को 'नोड' के रूप में कुछ की पहली घटना मिलती है, और 'खोज' सभी घटनाओं को पाता है, जो 'नोडसेट' लौटाता है। नोडसेट नोड्स की एक सरणी की तरह है ताकि आप इसे फिर से चालू कर सकें। –

उत्तर

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 क्वेरी स्ट्रिंग अब काम नहीं करता है। –

+0

@ डेवलांग यह मेरे लिए काम करता है लेकिन मुझे लगता है कि 100 परिणाम – makevoid

+0

की हार्ड सीमा है यह अब और काम नहीं कर रहा है, Google जंगली पार्सिंग –

संबंधित मुद्दे