#scrape #cli #search

app scwape

一个通过 CSS 选择器抓取网页的工具

3 个版本

0.1.5 2021 年 7 月 30 日
0.1.4 2021 年 7 月 30 日

#35 in #scrape

MITGPL-3.0-only

17KB
270

Scwape

一个使用 Rust 编写的命令行工具,可以通过 CSS 选择器从网站中抓取数据。

安装

cargo install scwape

用法

# syntax: scwape <url> -s "#css-selector"
# get all elements with an href from wikipedia's home page
scwape "https://www.wikipedia.org/" -s '[href]'
# get mdn's list of css selectors
scwape "https://mdn.org.cn/en-US/docs/Web/CSS/CSS_Selectors" -s '[href*="/en-US/docs/Web/CSS/"]'
# syntax: scwape <file> -s "#css-selector" -f "format specifier\n"
# get the headers in mdn's list of css selectors. When specifying a format, appending a newline is typically desirable. 
curl "https://mdn.org.cn/en-US/docs/Web/CSS/CSS_Selectors" > selector.html
scwape selector.html -s "h2" -f "\id: \text\n"

默认格式为 \text\n,额外的格式说明符将被忽略。

scwape <url_or_file> -s "#selector1" -s ".selector2" -f -f "format1\n" -f "format2\n" -f "format3\n"

等同于

scwape <url_or_file> -s "#selector1" -s ".selector2" -f "format1\n" -f "format2\n"

空白的 -f 和额外的 "format3\n 将被忽略。

可能的格式说明符有

  • Id (\id,元素的 ID)
  • Name (\name,元素名称)
  • Classes (\classes,元素的类)
  • Text (\text,元素的子节点组合文本)
  • Html (\html,元素的 HTML)
  • Attrs (\attrs,元素的属性)

\id 将被替换,但 \\id\\\id 等将不会。其他格式说明符也是如此。

存在不同的 -d 选项,允许独立打印每个选择器。默认行为是按照它们出现的顺序打印所有选择器的匹配元素。不同的选项将依次打印第一个选择器的元素,然后是第二个,然后是第三个,依此类推。

自动补全

Fish 和 Bash 壳补全可在 GitHub 上找到,并在 cargo build 时生成。要生成自己的补全,请在 build.rs 中选择合适的壳,然后运行 cargo build。shell 补全将在补全目录中可用。可用壳的列表在 clap 的文档 中。

依赖关系

~10–26MB
~364K SLoC