在 Hpricot 文档中(位于 https://github.com/hpricot/hpricot),有一个 doc.search() 方法。然后文档继续说“快捷方式是使用除数”:
(doc/"p.posted")
它确实有效,这是肯定的,但我想知道,这是什么表示法?我以前从未遇到过。
最佳答案
Hpricot(和 Nokogiri,因为它支持 Hpricot 的快捷方式)支持“搜索”(/
)和“在”(%
)两种快捷方式。
Search
意思是“找到这个模式的所有出现”和at
意味着找到第一次出现。 Search
返回节点列表,而 at
返回单个节点,当您要访问该节点的内容时必须牢记这一点。
一般来说,at
适用于您知道唯一且不想迭代的标签或 ID。 Search
用于遍历表格中的所有行或每个 <p>
之类的事情文档中的标记。您还可以从 %
链接,这对于查找特定节点然后下降到该节点很有用。
require 'hpricot'
html = '
<html>
<head><title>blah</title>
<body>
<div id="foo">
<p>paragraph1</p>
<p>paragraph2</p>
</div>
</body>
</head>
'
doc = Hpricot(html)
doc.at('title').inner_text # => "blah"
(doc / 'p').last.inner_text # => "paragraph2"
(doc % 'p').inner_text # => "paragraph1"
(doc % '#foo').search('p').size # => 2
个人推荐Nokogiri在 Hpricot。它支持所有快捷方式,但功能更全面,并且得到了很好的支持。
还有,快捷方式 /
和 %
不是我见过的任何标准的一部分;它们是 Hpricot 本地的,为方便起见由 Nokogiri 继承。我不记得在 Perl 或 Python 解析器中见过它们。
关于ruby - Hpricot 中使用的(例如)除数表示法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4782416/