3个版本
0.2.2 | 2024年8月6日 |
---|---|
0.2.1 | 2024年8月5日 |
0.2.0 | 2024年8月3日 |
#473 in Web编程
398 每月下载量
83KB
663 行
Coma - 网站爬虫
概述
Coma是一个轻量级的命令行工具,用于从网页中抓取各种类型的内容,如文本、评论、链接和图像。其简单性和灵活性使用户能够轻松地从给定的URL中提取所需的数据。
安装
您可以通过在克隆存储库后本地编译它或直接从crates.io安装Coma。
本地克隆和编译
-
克隆仓库
git clone https://github.com/yourusername/coma.git cd coma
-
使用Cargo构建项目
cargo build --release
-
运行编译后的二进制文件
./target/release/coma --help
从crates.io安装
要从crates.io安装Coma,请使用以下命令
cargo install coma
这将下载和编译Coma,使其可以从命令行轻松使用。
程序行为
命令结构
要使用Coma,基本命令结构如下
coma [OPTIONS] --url <URL> <COMMAND>
其中 <URL>
是您要抓取的网站,而 <COMMAND>
指定您希望提取的数据类型。
命令
可用的命令使您能够针对网页上的特定内容
- texts:从页面的HTML中提取文本。
- comments:从HTML中提取任何评论(例如,在HTML注释标签中)。
- links:从页面中提取所有超链接,允许您查看导航结构或相关页面。
- images:提取页面上的图像的URL。
- graph:发现完成后,您的浏览器将打开一个交互式拓扑图
- help:显示帮助菜单,提供有关用法和可用选项的信息。
选项
Coma包括几个选项来定制其行为
-
-u, --url <URL>
:指定开始抓取过程的URL的必选选项。 -
-d, --depth <DEPTH>
:确定爬虫应从指定URL深入的程度0
:仅抓取指定的URL。<0
:启用无限深度,允许爬虫遍历所有链接页面。- 默认值为
0
。
-
-b, --bound <BOUND>
:设置过滤器以仅包含包含特定子串的URL。这可以用于限制抓取到特定域名或网站部分的页面。默认值为空字符串,表示不应用过滤。 -
-t, --thread <THREAD>
:设置抓取期间的最大并发异步调用数。默认设置为5
,在速度和性能之间取得平衡,不会压倒目标服务器。 -
-h, --help
:打印Coma的帮助菜单,包括使用说明和命令选项。 -
-V, --version
:显示Coma的当前版本。
示例用法
为了说明Coma的工作原理,这里有一些示例命令
-
从单个网页中提取所有文本
coma -u https://example.com texts
-
从网站中提取所有链接,同时允许深度为1
coma -u https://example.com -d 1 links
-
从具有特定URL过滤器的网页中抓取图像
coma -u https://example.com/jobs -b example.com/jobs images
-
使用网站拓扑创建网络图
coma -u https://example.com/jobs -d 2 graph
-
显示帮助菜单
coma help
未来规划
拓扑
在v0.2中引入了拓扑,但相当原始,先前目标仍然有效。
我旨在根据不同的启发式算法提供网站的完整拓扑。
- 网站的层次结构。
- 使用BFS(广度优先搜索)和DFS(深度优先搜索)从提供的链接中进行发现。
有几种不同的方式来表示这个图
- 在终端中的ASCII表示。
- 在终端中的图像渲染(覆盖各种协议,尽管不是所有终端都支持它们)。
- 用于动态拓扑的HTML页面,类似于Neo4j提供的。
命令
我们可以在当前选项之外添加更多命令选项。
- 表单
- 完整的HTML页面
- 文本中的正则表达式模式,以及一些有用的预设
选项
使用这些选项提高工具的易用性很重要
- 不同格式的输出,拥有CSV、JSON等将很有用。
- 代理
- Cookie和头部
结论
Coma是一个灵活且直接的工具,适用于任何需要快速从网站上抓取数据的人。用户可以通过各种命令和选项轻松定制他们的抓取体验,使其适合广泛的网页数据提取任务。
依赖项
~22–42MB
~650K SLoC