1 个不稳定版本
0.4.0 | 2021 年 6 月 6 日 |
---|
#1349 在 解析实现
用于 2 个 crate(通过 crusty-core)
56KB
987 行
robotstxt
Google 的 robots.txt 解析器和匹配器 C++ 库的本地 Rust 版本。
- 本地 Rust 版本,无第三方 crate 依赖
- 无不安全代码
- 保留原始库的所有行为
- 与原始库一致的 API
- 100% 通过 Google 原始测试
安装
[dependencies]
robotstxt = "0.3.0"
快速入门
use robotstxt::{DefaultMatcher,DefaultCachingMatcher};
fn main() {
let mut matcher = DefaultCachingMatcher::new(DefaultMatcher::default());
let robots_body = "user-agent: FooBot\n\
disallow: /\n";
matcher.parse(robots_body);
assert_eq!(false, matcher.one_agent_allowed_by_robots("FooBot", "https://foo.com/"));
}
此分支
- 尝试减少不必要的 CPU 浪费,- 完整解析
robots.txt
只需进行一次 - 尝试清理库并减少引用/生命周期的杂乱,使其难以在实际项目中使用
- 修复原始 Google 测试(固定 cmake 依赖项,--no-as-needed 构建,LD 链接)
关于
引用 Google 的 robots.txt 解析器和匹配器仓库中的 README
机器人排除协议(REP)是一种标准,允许网站所有者通过具有特定语法的简单文本文件来控制哪些 URL 可以被自动化客户端(即爬虫)访问。它是我们熟知的互联网的基本构建块之一,也是搜索引擎能够运行的原因。
由于过去 25 年中,REP 仅是一个事实上的标准,不同的实现者对 robots.txt 的解析略有不同,导致混淆。该项目旨在通过发布 Google 使用的解析器来解决这个问题。
该库略有修改(即一些内部头文件和等效符号),用于 Googlebot、Google 的爬虫的生产代码,根据网站管理员在 robots.txt 文件中提供的规则确定它可以访问哪些 URL。该库以开源形式发布,以帮助开发者构建更好地反映 Google 的 robots.txt 解析和匹配的工具。
Crate robotstxt 旨在将 Google 的 robots.txt 解析器和匹配器从 C++ 转换为 Rust。
测试
$ git clone https://github.com/Folyd/robotstxt
Cloning into 'robotstxt'...
$ cd robotstxt/tests
...
$ mkdir c-build && cd c-build
...
$ LDFLAGS="-Wl,--no-as-needed" cmake ..
...
$ make
...
$ make test
Running tests...
Test project ~/robotstxt/tests/c-build
Start 1: robots-test
1/1 Test #1: robots-test ...................... Passed 0.33 sec
许可证
robotstxt 解析器和匹配器 Rust 库根据 Apache 许可证的条款进行许可。有关更多信息,请参阅 LICENSE。