如何提取XML元素属性

时间:2016-12-19 05:34:33

标签: ruby-on-rails ruby nokogiri

我已经缩小了我想要使用Nokogiri从网页中提取的网址。

不幸的是,当我尝试从这个对象获取属性时,我无法做到。它就在那里,我甚至可以看到它,但我不知道如何检索URL。

请看一下这个Nokogiri对象。我已尝试使用url = titleArea.attr("href")以及url = titleArea.attribute("href")

我感兴趣的是:

[#<Nokogiri::XML::Attr:0x3fdc727d8d98 name="href"
    > value="watek-nowy-pomysl_1515">]

从这个对象:

> #<Nokogiri::XML::Element:0x3fdc72796f9c name="span" attributes=[#<Nokogiri::XML::Attr:0x3fdc727d9bd0 name="class" value="
> subject_new">, #<Nokogiri::XML::Attr:0x3fdc727d9bbc name="id"
> value="tid_1515">] children=[#<Nokogiri::XML::Element:0x3fdc727d8f64
> name="a" attributes=[#<Nokogiri::XML::Attr:0x3fdc727d8d98 name="href"
> value="watek-nowy-pomysl_1515">]
> children=[#<Nokogiri::XML::Text:0x3fdc727d808c "nowy pomys�">]>]>

.to_s表示很漂亮但是我无法从字符串中提取href,我需要使用Nokogiri的功能:

"<span class=\" subject_new\" id=\"tid_1515\">\n  <a href=\"watek-nowy-pomysl_1515\">nowy pomys&#xC5;&#xFFFD;</a>\n</span>"

1 个答案:

答案 0 :(得分:0)

您的对象是span元素,其中包含a元素。在访问属性之前,您必须先选择a元素。

str = "<span class=\" subject_new\" id=\"tid_1515\">\n  <a href=\"watek-nowy-pomysl_1515\">nowy pomys&#xC5;&#xFFFD;</a>\n</span>"
title_area = Nokogiri::XML(str)
title_area.at('a')['href'] # => "watek-nowy-pomysl_1515"