Ruby nokogiri解析内解析



我正在学习如何使用nokogiri gem在ruby中编程。

doc.xpath("//*[@class='someclass']//@href")

将返回HTML中某个" someeclass "类下的所有href值。

doc.xpath("//*[@class='someclass']").xpath("//@href")

将返回整个HTML中的所有href。

有人能给我解释一下如何在xpath中使用//@等价物吗?例如,在已解析的数据中,例如:

doc.xpath("//*[@class='someclass']").xpath(grab all the href within previously parsed)

是可能的吗?

使用*,@似乎相当强大,但我似乎无法缩小范围,除了搜索整个HTML,无论我在哪里使用它。

作为一个初学者,我只是认为它会…直观的吗?能够使用"从任何地方抓取"类型的语法,限制在之前已解析的内容,以缩小我的目标范围,因此我可以执行以下操作:

xpath(whatever).css(whatever).xpath(whatever)

也许这不是一个好的做法?也许随着对解析概念的更多理解,我就永远不必这样做了?有时我发现同时使用xpath和CSS更容易。

希望有人能开导我。

尝试从

更改第二个表达式
doc.xpath("//*[@class='someclass']").xpath("//@href")

doc.xpath("//*[@class='someclass']").xpath(".//@href")
XPath表达式开头的

//表示"文档根的后代",而.//表示"上下文节点的后代"。

你说得对,XPath很强大,而且它的一些主要方面是直观的…但有很多重要的部分不是凭直觉的,或者取决于你的直觉是如何训练的。仔细研究是有益的,特别是如果您将经常使用XPath !

相关内容

  • 没有找到相关文章

最新更新