Skip to main content

Crate pagesift_html

Crate pagesift_html 

Source
Expand description

面向正文提取的 HTML 解析器。

  • 零拷贝:文本和属性值直接引用源字符串,只有含字符引用的部分才解码到一块共享缓冲区;
  • 紧凑的树:节点放在一个 Vec 里,用 u32 下标互相引用,标签是枚举;
  • HTML5 树构建规则里影响文本结构的部分都实现了(隐式标签、自动闭合、作用域、表格、 外部内容、raw text),见 builder 模块的说明;
  • CSS 选择器(Selector)和 HTML 序列化(NodeRef::html)。
let doc = pagesift_html::Html::parse("<p>Fish &amp; chips<p>Peas");
let paragraphs: Vec<String> = doc
    .root()
    .descendants()
    .filter(|n| n.tag() == Some(pagesift_html::Tag::P))
    .map(|n| n.text())
    .collect();
assert_eq!(paragraphs, ["Fish & chips", "Peas"]);

Structs§

Ancestors
Children
Descendants
Element
元素:标签、名字和属性。
Html
解析好的文档。借用源字符串(输入含 \r 或 NUL 时持有规范化后的副本)。
NodeId
节点 id,在同一个文档里唯一,取值 0..Html::len()。
NodeRef
节点的引用。可以复制,比较时比的是节点身份。
Select
Html::select 和 NodeRef::select 返回的迭代器。
Selector
解析好的选择器列表(逗号分隔)。解析一次,可以在多个文档、多个线程上复用。
SelectorError
选择器语法错误:出错位置(字节偏移)和原因。

Enums§

Tag
HTML 标签。不认识的标签是 Tag::Other,名字从 crate::Element::name 取。