如何使用 Nokogiri 获取属性值

Eri*_*ric 3 ruby attributes nokogiri

12:40 PM - 1 Mar 2016我正在尝试使用 Nokogiri从data-original-title以下代码块中获取值:

\n\n
<span class="ProfileHeaderCard-joinDateText js-tooltip u-dir" dir="ltr" data-original-title="12:40 PM - 1 Mar 2016">Joined March 2016</span>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我成功到达全局节点:

\n\n
[#<Nokogiri::XML::Element:0x3ff7899f7b60 name="span" attributes=[#<Nokogiri::XML::Attr:0x3ff7899f9ec4 name="class" value="ProfileHeaderCard-joinDateText js-tooltip u-dir">, #<Nokogiri::XML::Attr:0x3ff7899f9e9c name="dir" value="ltr">, #<Nokogiri::XML::Attr:0x3ff7899f9e88 name="title" value="3:40 AM - 1 Mar 2016">] children=[#<Nokogiri::XML::Text:0x3ff7899f8790 "Joined March 2016">]>]\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用此代码Nokogiri::HTML(open("https://twitter.com/F_Casadei?lang=en")).css(".ProfileHead\xe2\x80\x8c\xe2\x80\x8berCard-joinDateText.js-tooltip.u-dir")

\n\n

但我无法达到这个具体值。

\n

the*_*Man 5

通过将节点视为散列来访问参数值是惯用的:

require 'nokogiri'

doc = Nokogiri::HTML('<div class="foo"></div>')
doc.at('div')['class'] # => "foo"
Run Code Online (Sandbox Code Playgroud)

而且,就像哈希一样,您也可以分配给它:

doc.at('div')['class'] = 'bar'
puts doc.to_html 

# >> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# >> <html><body><div class="bar"></div></body></html>
Run Code Online (Sandbox Code Playgroud)

[]请参阅文档中的[]=修改节点和属性”。