访问Nokogiri中的HTML属性

5
这里是我正在使用的代码:
location = block.xpath("*/img")
puts location

以下是输出结果:

<img src="/images/p.gif" height="1" width="0">

我想要做的是获取html中的width属性,但是我似乎无法做到。我认为我需要在我的代码中加入`['width']`,我已经尝试过跟随网上的各种示例,但是无法使其正常工作。
2个回答

13

CSS选择器通常更易于阅读和理解:

puts block.at('img')[:height]

2
或者是block.at_css('img')[:height],或直接使用block.at('img')[:height] - Phrogz
是的!我记不得那个方法叫什么了。帖子已更新。 - Andy Waite

6
看一下这个XPath教程中的xpath语法。
如果只有一个元素,可以尝试使用block.at_xpath("*/img")["width"]或者*/img/@width

我猜你的意思是 */img/@width - Michael Kohl
@Micheal,是的,通过那个小修改,它运行得很好。我认为在第一个示例中他也有一个额外的括号。 - Noah Clark
1
block.xpath返回一个元素的NodeSet。你需要使用block.at_xpath来返回一个单独的元素。另外,注意使用*/img/@width将会给你一个Attribute对象,但你想要在上面加上.text.value.content来将属性的值作为字符串提取出来。 - Phrogz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接