3 个版本
0.1.5 | 2021 年 7 月 30 日 |
---|---|
0.1.4 | 2021 年 7 月 30 日 |
#35 in #scrape
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