我有这个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
答案 0 :(得分:2)
该号码是href
属性的一部分,请尝试:
element.first['href']
方法[]
获取节点属性的文本值。
那应该给你字符串"/flag/?flagCode=16&postingID=2884068312"
。然后,您可以使用正则表达式来获取数字,例如/ID=(\d+)/
应该有效。
所以把它放在一起:
element.first['href'][/ID=(\d+)/, 1]
答案 1 :(得分:1)
我认为你想要的元素['href']会被拉出来:'/ flag /?flagCode = 16&amp; posting posting posting posting posting posting posting ='然后,您可以获取该值并通过正则表达式运行它来获取您的数字,如:
postingID=(\d+)