gpt4 book ai didi

css - ruby nokogiri 在解析中解析

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:01 24 4
gpt4 key购买 nike

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

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

将返回 HTML 中某处“someclass”类下的所有 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!

关于css - ruby nokogiri 在解析中解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24927299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com