ruby - Hpricot 中使用的(例如)除数表示法是什么?

标签 ruby hpricot

在 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/

相关文章:

ruby - 无法将命令行参数传递给 Ruby 脚本并从命令行读取

ruby - Hpricot 去除单个元素

ruby - open-uri 没有将 http 重定向到 https

css - Ruby:网页的计算样式

ruby - 什么是选项哈希?

ruby-on-rails - 没有要加载的文件 - Rails 3.2 中的 bundle 程序/设置与 Passenger

ios - FaSTLane 注释掉字符串中的引号

ruby - sleep 0 有特殊意义?

ruby - hpricot 与 Firebug 的 XPath

html - 如何使用 Hpricot 删除 html 元素的样式属性?