2012-03-06 36 views
0

我有這樣的引入nokogiri對象:引入nokogiri我怎麼得到這個值了

element.first 
=> #<Nokogiri::XML::Element:0x3fc0cf8ac4b8 name="a" attributes=[#<Nokogiri::XML::Attr:0x3fc0cf8ac454 name="class" value="fl">, #<Nokogiri::XML::Attr:0x3fc0cf8ac42c name="id" value="flag16">, #<Nokogiri::XML::Attr:0x3fc0cf8ac418 name="href" value="/flag/?flagCode=16&postingID=2884068312">, #<Nokogiri::XML::Attr:0x3fc0cf8ac404 name="title" value="Wrong category, wrong site, discusses another post, or otherwise misplaced">] children=[#<Nokogiri::XML::Text:0x3fc0cf8ab6bc "\n\t\t\t\tmiscategorized">]> 

我需要從postingID值獲得數2884068312出來。

任何想法如何實現這一目標?

element.first.value 
NameError: undefined local variable or method `value' for main:Object 
    from (irb):138 
1.9.2-p290 :139 > element.first[:value] 
=> nil 
1.9.2-p290 :140 > element.first["value"] 
=> nil 

回答

2

數是href屬性的一部分,所以嘗試:

element.first['href'] 

[]獲取的節點的屬性的文本值的方法。

這應該給你的字符串"/flag/?flagCode=16&postingID=2884068312"。然後,您可以使用正則表達式來獲取數,像/ID=(\d+)/應該工作。

所以將其組合在一起:

element.first['href'][/ID=(\d+)/, 1] 
1

我想你想元素[ 'href' 屬性]將拔出: '?/標記/ flagCode = 16 & postingID = 2884068312'。然後,你可以採取的值,並運行它通過一個正則表達式來抓住你的號碼:

postingID=(\d+)