ACHE 是一个聚焦网络爬虫。它收集满足特定条件的网页,例如属于某域名的页面或包含用户指定模式的页面。 ACHE 与通用爬虫的区别在于,它使用页面分类器来区分给定领域中的相关页面和不相关页面。页面分类器可以简单到一条正则表达式(例如匹配包含特定单词的每个页面),也可以是基于机器学习的分类模型。 ACHE 还能自动学习如何对链接进行优先级排序,以便高效定位相关内容,同时避免抓取不相关内容。
ACHE 支持许多特性,例如:
从 0.11.0 版本开始,ACHE 使用 Apache 2.0 许可证。 之前的版本使用 GNU GPL 许可证。
更多信息可在项目的文档中获取。
你可以从源代码构建 ACHE,使用 conda 下载可执行二进制文件,或者使用 Docker 构建镜像并在容器中运行 ACHE。
前提条件: 你需要安装近期版本的 Java(JDK 8 或更新版本)。
要从源代码构建 ACHE,可以在终端中执行以下命令:
git clone https://github.com/ViDA-NYU/ache.git
cd ache
./gradlew installDist
这将在 ache/build/install/ 下生成一个安装包。然后你可以将 ACHE 二进制文件添加到 PATH 环境变量中,使 ache 命令在终端中可用:
export ACHE_HOME="{path-to-cloned-ache-repository}/ache/build/install/ache"
export PATH="$ACHE_HOME/bin:$PATH"
前提条件: 你需要安装最近版本的 Docker。详情请参阅 https://docs.docker.com/engine/installation/ 以获取针对你的平台安装 Docker 的说明。
我们在 Docker Hub 上为每个发布的版本发布了预构建的 Docker 镜像。你可以使用以下命令运行最新镜像:
docker run -p 8080:8080 vidanyu/ache:latest
或者,你可以自己构建镜像并运行:
git clone https://github.com/ViDA-NYU/ache.git
cd ache
docker build -t ache .
docker run -p 8080:8080 ache
Dockerfile 暴露了两个数据卷,这样你可以在容器停止后挂载包含配置文件的目录(位于 /config)并保留爬虫存储的数据(位于 /data)。
前提条件: 你的系统需要安装 Conda 包管理器。
如果你使用 Conda,可以通过运行以下命令从 Anaconda Cloud 安装 ache:
conda install -c vida-nyu ache
注意:只有发布标记的版本才会发布到 Anaconda Cloud,因此通过 Conda 获得的版本可能不是最新的。如果你想尝试最新版本,请克隆仓库并从源代码构建,或使用 Docker 版本。
在开始爬取之前,你需要创建一个名为 ache.yml 的配置文件。我们在仓库的 config 目录中提供了一些配置示例,可以帮助你快速入门。
你还需要一个名为 pageclassifier.yml 的页面分类器配置文件。有关如何配置页面分类器的详细信息,请参阅页面分类器文档。
配置好分类器后,你还需要一个种子文件,即每行包含一个 URL 的纯文本文件。爬虫将使用这些 URL 来引导爬取过程。
最后,你可以使用以下命令启动爬虫:
ache startCrawl -o <data-output-path> -c <config-path> -s <seed-file> -m <model-path>
其中,
<configuration-path> 是包含 ache.yml 的配置目录的路径。<seed-file> 是包含种子 URL 的种子文件。<model-path> 是包含 pageclassifier.yml 文件的模型目录的路径。<data-output-path> 是数据输出目录的路径。使用仓库中提供的示例 预训练页面分类器模型 和示例 种子文件 运行 ACHE 的示例:
ache startCrawl -o output -c config/sample_config -s config/sample.seeds -m config/sample_model
爬虫将运行并将日志打印到控制台。随时按 Ctrl+C 停止它(可能需要一些时间)。对于长时间爬取,你应该使用 nohup 等工具在后台运行 ACHE。
ACHE 可以以多种格式输出数据。目前可用的数据格式包括:
有关如何配置数据格式的更多详细信息,请参见数据格式文档页面。
我们欢迎用户反馈。请使用 Github issue 跟踪器 提交任何建议、问题或 bug 报告。
我们还在 Gitter 上设有聊天室。
欢迎代码贡献。我们使用的代码风格源自 Google Style Guide,但使用 4 个空格作为制表符。仓库中提供了 Eclipse 格式化配置文件。