我有这个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 "nttttmiscategorized">]>
我需要从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
数字是href
属性的一部分,请尝试:
element.first['href']
方法[]
获取节点的属性的文本值。
这应该会给你一个字符串"/flag/?flagCode=16&postingID=2884068312"
。然后,您可以使用regex来获取数字,类似/ID=(d+)/
的东西应该可以工作。
所以把它放在一起:
element.first['href'][/ID=(d+)/, 1]
我想你想要元素['href'],它会拉出:'/flag/?flagCode=16&postingID=2884068312'。然后你可以取这个值,并通过正则表达式运行它来获取你的数字,比如:
postingID=(d+)