#html #web-scraping #html-parser #selector #scrape #query #jquery

visdom

一个HTML文档语法和操作库,使用类似于jQuery的API,易于进行网页抓取和解析混淆的HTML

57个版本 (2个稳定版)

1.0.1 2024年4月18日
1.0.0 2023年9月11日
0.5.10 2023年4月17日
0.5.9 2022年11月29日
0.4.8 2021年3月27日

153网页编程 中排名

Download history 54/week @ 2024-05-03 26/week @ 2024-05-10 27/week @ 2024-05-17 37/week @ 2024-05-24 35/week @ 2024-05-31 27/week @ 2024-06-07 36/week @ 2024-06-14 56/week @ 2024-06-21 21/week @ 2024-06-28 119/week @ 2024-07-05 36/week @ 2024-07-12 27/week @ 2024-07-19 42/week @ 2024-07-26 34/week @ 2024-08-02 44/week @ 2024-08-09 27/week @ 2024-08-16

每月151次下载
7 个包 中使用

MIT 许可证

285KB
7K SLoC

Rust 6K SLoC // 0.1% comments Go 471 SLoC // 0.1% comments JavaScript 409 SLoC // 0.1% comments

Visdom

Build status crates.io tag codecov Crates download docs.rs GitHub license

API 文档     性能     中文 API 文档     更新文档

🏠 一个用Rust编写的HTML解析和节点选择及变异库,使用类似于jQuery的API,省略了仅在浏览器中工作的部分(例如渲染和事件相关方法)。

它不仅有助于进行HTML抓取,还提供了用于变异text节点的有用API,因此您可以将HTML与脏HTML片段混合,并让网页抓取器远离。💖

用法

use visdom::Vis;
use visdom::types::BoxDynError;

fn main() -> Result<(), BoxDynError>{
  let html = r##"
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
      </head>
      <body>
        <nav id="header">
          <ul>
            <li>Hello,</li>
            <li>Vis</li>
            <li>Dom</li>
          </ul>
        </nav>
      </body>
    </html>
  "##;
  // load html
  let root = Vis::load(html)?;
  let lis = root.find("#header li");
  let lis_text = lis.text();
  println!("{}", lis_text);
  // will output "Hello,VisDom"
  Ok(())
}

在线尝试

特性标志

从v0.5.0版本开始,visdom添加了一些特性标志以支持不同用法的条件编译。

特性 描述 API 配置
销毁 当您不需要删除或清除元素时,可以忽略此特性标志。 .remove() .empty() (IElementTrait) remove_child() clone() visdom= {版本=xxx,特性= ["销毁"]}
插入 当您不需要变异DOM时,可以忽略此特性标志。 append() append_to() prepend() prepend_to() insert_after() after() insert_before() before() replace_with() visdom= {版本=xxx,特性= ["插入"]}
文本 当您不需要修改TextNode时,可以忽略此功能标志。 .texts() .texts_by() texts_by_rec() visdom= {版本=xxx,特性= ["文本"]}
完整 当您需要上述所有API时,可以开启此功能标志。 - visdom= {版本=xxx,特性= ["完整"]}

依赖项

问题 & 建议 & 错误?

如果您有任何问题、错误或好建议,请通过问题向我们报告。

许可证

MIT许可证.

依赖项

~2.9–4.5MB
~86K SLoC