#web-scraping #loader #site #parser #file

scr

最简单的网站解析器和文件加载器

9 个版本 (3 个稳定版)

1.0.2 2023 年 8 月 21 日
1.0.1 2023 年 8 月 20 日
0.2.3 2023 年 8 月 16 日
0.1.1 2023 年 8 月 15 日

#26 in #site

Download history 1/week @ 2024-03-27 3/week @ 2024-04-03

每月 58 次下载

MIT 许可协议

12KB
102

scr

Crates.io Crates.io GitHub: 1kawdalg/scr

"简单是可靠性的前提" — Edsger Dijkstra

什么是 "scr"?

这是对 crates reqwest = {version = "0.11", features = ["blocking"]}scraper = "0.17.1" 的简化分支,它们协同工作。还包括系统 pub struct std::path::Pathpub struct std::fs::Filepub fn std::fs::write

"如何在应用程序中使用 scr 的最新稳定版本?"

# Cargo.toml
[dependencies]
scr = "1.0.2"

示例

  • 解析网站

use scr::Scraper;

fn main() {
    let scraper = Scraper::new("scrapeme.live/shop/").unwrap();
    let element = scraper.get_el("main#main>ul>li.product>a>h2").unwrap();

    assert_eq!(element.inner_html(), "Bulbasaur")
}
  • 解析网站片段

use scr::Scraper;

fn main() {
    let scraper = Scraper::new("scrapeme.live/shop/").unwrap();
    let fragment = scraper.get_text_once("main#main>ul>li.product>a").unwrap();
    let new_scraper = Scraper::from_fragment(fragment.as_str()).unwrap();
    let element = new_scraper.get_el("a").unwrap();

    assert_eq!(element.inner_html(), "Bulbasaur")
}
  • 下载文件

use scr::FileLoader;

fn main() {
    let file_loader = FileLoader::new(
        "scrapeme.live/wp-content/uploads/2018/08/011.png",
        "./data/some_png.png"
    ).unwrap();
    
    assert_eq!(
        file_loader.file
            .file_name().unwrap()
            .to_str().unwrap(),
        "some_png.png"
    );
}

crate 由以下人员开发

  • 版本 1.0

onekg;
reloginn;
Black Soul

依赖项

~6–19MB
~298K SLoC