解析中的ruby nokogiri解析

时间:2014-07-24 07:14:58

标签: css ruby xpath html-parsing nokogiri

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

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

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

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

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

有人可以向我解释如何在解析数据中使用// @ equivalent in xpath,例如:

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

可能吗?

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

作为初学者,我只是觉得它会直观吗?能够使用"从任何地方抓取"语法类型仅限于先前已解析的内容以缩小目标范围,因此我可以执行类似

的操作
xpath(whatever).css(whatever).xpath(whatever)

也许这不是一个好习惯?也许更了解解析概念我永远不会这样做?有时我发现使用xpath和CSS更容易..

希望有人可以启发我..

1 个答案:

答案 0 :(得分:1)

尝试从

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

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

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

你是对的,XPath是强大的,它的一些主要方面是直观的...但有一些重要的部分不直观,或取决于你的直觉是如何训练的。仔细研究会带来好处,特别是如果你要使用XPath那么多!