2011-09-14 32 views
0

我正在使用Mechanize gem來解析html內容。問題在解析nokogiri元素?

射擊這個終端上,

agent.get("http://www.example.com/").search(".sidebar-deal-excerpt").first 

給了我這樣的:

<Nokogiri::XML::Element:0x3fcdb3add700 name="div" attributes=[#<Nokogiri::XML::Attr:0x3fcdb3add570 name="class" value="sidebar-deal-excerpt">] children=[#<Nokogiri::XML::Text:0x3fcdb3add0ac "\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t">, #<Nokogiri::XML::Element:0x3fcdb3adcfd0 name="a" attributes=[#<Nokogiri::XML::Attr:0x3fcdb3adcf6c name="href" value="http://www.example.com/getaway-8774-yatra-september-deal">] children=[#<Nokogiri::XML::Text:0x3fcdb3adcaa8 " ">, #<Nokogiri::XML::Element:0x3fcdb3adc9cc name="span" attributes=[#<Nokogiri::XML::Attr:0x3fcdb3adc968 name="style" value="color: #000">] children=[#<Nokogiri::XML::Text:0x3fcdb3dd6b50 " international holiday package bookings at Yatra.com ">]>, #<Nokogiri::XML::Text:0x3fcdb3dd5f5c " ">]>, #<Nokogiri::XML::Text:0x3fcdb3dd5a98 "\r\n\t\t\t\t\t\t\t\t\t\t\t\t">]> 

在終端

agent.get("http://www.example.com/").search(".sidebar-deal-excerpt").first.children 

射擊這給了我這樣的: -

<Nokogiri::XML::Text:0x3fcdb399c3dc "\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t">, #<Nokogiri::XML::Element:0x3fcdb399c300 name="a" attributes=[#<Nokogiri::XML::Attr:0x3fcdb399c29c name="href" value="http://www.example.com/getaway-8774-yatra-september-deal">] children=[#<Nokogiri::XML::Text:0x3fcdb399bdd8 " ">, #<Nokogiri::XML::Element:0x3fcdb399bcfc name="span" attributes=[#<Nokogiri::XML::Attr:0x3fcdb399bc98 name="style" value="color: #000">] children=[#<Nokogiri::XML::Text:0x3fcdb399b7d4 "international holiday package bookings at Yatra.com ">]>, #<Nokogiri::XML::Text:0x3fcdb3dd8770 " ">]>, #<Nokogiri::XML::Text:0x3fcdb3dd6df8 "\r\n\t\t\t\t\t\t\t\t\t\t\t\t">] 

事情是我想從此獲取網址。我想這個屬性值

http://www.example.com/getaway-8774-yatra-september-deal 

任何人可以幫助我在此解析。

回答

1

如何:(未經測試)

agent = Mechanize.new 
page = agent.get("http://www.snapdeal.com/") 
page = agent.get("http://www.snapdeal.com/") # yeah, you've got to call it twice for this site 
urls = page.search(".sidebar-deal-excerpt a").collect{|a| a.attributes["href"].value } 
+0

沒有它不工作..這裏是我需要的網站來解析。 snapdeal.com的邊欄 –

+0

請參閱上面的代碼。要獲得的價值,你必須使用a.attributes [「href」]。值 – Candide

+0

爲什麼我必須打電話給這個網站兩次..任何具體的事情要記住.. –