Hpricot (и Nokogiri, потому что он поддерживает ярлыки Hpricot) поддерживает два метода ярлыка для «поиска», (/
) и «в» (%
).
Search
означает «найти»все вхождения этого паттерна "и at
означает поиск первого вхождения.Search
возвращает список узлов, в то время как at
возвращает один узел, о котором вы должны помнить, когда хотите получить доступ к содержимому узла.
Как правило, at
подходит длятеги или идентификаторы, которые, как вы знаете, уникальны и не хотят повторяться.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.