2011-08-18 54 views
1

我知道這個問題已經被剛纔問,但我無法得到解析結果。我試圖用nokogiri來解析metawords,有沒有人能指出我的錯誤?引入nokogiri解析爲metawords

keyword = [] 
meta_data = doc.xpath('//meta[@name="Keywords"]/@content')           #parsing for keywords 
meta_data.each do |meta| 
    keyword << meta.value 
end 
key_str=keyword.join(",") 

我試着在irb中運行這個,但關鍵字返回nil。

這是我用它在IRB

require 'rubygems' 
require 'nokogiri' 
doc = Nokogiri::HTML("www.google.com") 

已經嘗試從其他計算器職位的替代品像
Nokogiri html parsing question,但沒有用,他們還是回到零。我想我在某處做錯了什麼。

+0

難道這個答案在這裏爲你工作? http://stackoverflow.com/questions/3442237/nokogiri-html-parsing-question/3442302#3442302這可能是問題的重新發布。 –

+0

@Devin我已經試過了..它返回零爲好。我嘗試了所有可能的解決方案。 – noobie

+0

@noobie你還沒有「嘗試過所有可能的解決方案」。這是一個愚蠢的,不可能的,情節化的東西要寫。 – Phrogz

回答

3
  1. www.google.com沒有在源的任何元的關鍵字。查看頁面上的源代碼以查看自己。所以即使其他一切都完美無缺,您仍然無法獲得結果。

  2. doc = Nokogiri::HTML("www.google.com")結果是

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
    <html><body><p>www.google.com</p></body></html> 
    

    如果你想獲取一個URL的內容,你要使用這樣的:如果你得到一個有效的

    require 'open-uri' 
    doc = Nokogiri::HTML(open('http://www.google.com')) 
    
  3. HTML頁面,並使用上keywords適當的外殼相匹配的來源,它工作正常。這裏有一個例子從我的IRB會議上,抓取的網頁從恰巧使用name="keywords"而不是name="Keywords"我網站上的應用程序之一:

    irb(main):001:0> require 'open-uri' 
    #=> true 
    irb(main):002:0> require 'nokogiri' 
    #=> true 
    irb(main):003:0> url = "http://pentagonalrobin.phrogz.net/choose" 
    #=> "http://pentagonalrobin.phrogz.net/choose" 
    irb(main):04:0> doc = Nokogiri::HTML(open(url)); nil # don't show doc here 
    #=> nil 
    irb(main):005:0> doc.xpath('//meta[@name="keywords"]/@content').map(&:value) 
    #=> ["team schedule free round-robin league"] 
    
+0

感謝您的解決方案...事實證明,這對我的小K來說確實是一個愚蠢的錯誤,是的,這是一個錯誤的說法,使「所有可能的解決方案」,而不是「許多解決方案」 – noobie