#web-crawler #spider #grpc-server #web-indexer #site-map-generator

bin+lib website_crawler

基于 gRPC tokio 的 Web 捕获器,使用 spider 构建

193 个版本

0.9.7 2024 年 7 月 23 日
0.9.3 2024 年 3 月 24 日
0.8.12 2023 年 10 月 28 日
0.8.9 2023 年 7 月 26 日
0.1.2 2021 年 3 月 27 日

1627Web 编程

Download history 87/week @ 2024-05-02 64/week @ 2024-05-09 58/week @ 2024-05-16 68/week @ 2024-05-23 70/week @ 2024-05-30 49/week @ 2024-06-06 41/week @ 2024-06-13 29/week @ 2024-06-20 40/week @ 2024-06-27 55/week @ 2024-07-04 23/week @ 2024-07-11 162/week @ 2024-07-18 335/week @ 2024-07-25 50/week @ 2024-08-01 25/week @ 2024-08-08 14/week @ 2024-08-15

每月 456 次下载

MIT 许可证

29KB
494

捕获器

A gRPC Web 索引器,专为性能加速。

此项目能够高效地处理每秒数百万个页面。

入门

请确保已安装 Rust 或 Docker。

此项目需要您启动另一个 gRPC 服务器在端口 50051,遵循 proto 规范

每个捕获都使用随机代理欺骗用户代理,索引器以 spider 作为基础。

  1. cargo rundocker compose up

安装

您可以使用以下方法轻松安装

Cargo

crate 可用于在 Rust 项目中设置 gRPC 服务器。

cargo install website_crawler

Docker

您还可以使用 a11ywatch/crawler 中的 docker 镜像。

CRAWLER_IMAGE 环境变量设置为 darwin-arm64 以获取本机 M1 Mac 图像。

crawler:
  container_name: crawler
  image: "a11ywatch/crawler:${CRAWLER_IMAGE:-latest}"
  ports:
    - 50055

Node / Bun

我们还发布了 npm 包 @a11ywatch/crawler

npm i @a11ywatch/crawler

在项目顶部导入后,开始 gRPC 服务器或直接运行 node。

import "@a11ywatch/crawler";

示例

这是一个基本示例,用于捕获网页,将 spider 添加到您的 Cargo.toml

[dependencies]
website_crawler = "0.9.4"

一个基本的 示例 也可以完成

一个终端运行服务器

cargo run --example server --release

另一个终端运行客户端/服务器

cargo run --example client --release

https://user-images.githubusercontent.com/8095978/221221122-cfed83aa-6ca1-4122-a1db-0d9948e9f9d9.mov

依赖项

为了在本地构建 crawler >= 0.5.0,您需要 Protocol Buffers 编译器 protoc,以及 Protocol Buffers 资源文件。

Ubuntu

proto 编译器需要是 v3 才能编译。Ubuntu 18+ 自动安装。

sudo apt update && sudo apt upgrade -y
sudo apt install -y protobuf-compiler libprotobuf-dev

Alpine Linux

sudo apk add protoc protobuf-dev

macOS

假设已经安装了Homebrew。 (如果没有安装,请参阅Homebrew网站上的安装说明。)

brew install protobuf

特性

  1. jemalloc - 使用jemalloc内存分配器(默认禁用)。
  2. regex - 使用regex crate进行黑名单URL验证。
  3. ua_generator - 使用ua_generator crate来伪造随机用户代理。
  4. smart - 使用智能模式首先运行HTTP请求,当需要JS时再运行chrome。
  5. chrome:启用chrome无头渲染,使用环境变量CHROME_URL进行远程连接。

关于

该爬虫针对降低延迟进行了优化,并使用基于隔离的并发,因为它可以在几毫秒内处理超过10,000个页面。为了接收爬虫找到的链接,您需要将website.proto添加到您的服务器。这是必需的,因为每个请求都会创建一个线程。隔离上下文可以显著提高性能(防止共享资源/通信)。

帮助

如果您需要帮助实现接收页面或链接的gRPC服务器,请查看gRPC节点示例作为起点。

许可证

请在项目的根目录中检查许可证文件。

依赖项

~20–38MB
~656K SLoC