跳至主内容
版本:旧版 (v1.x - v2.x)

自行运行爬虫

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

如果您希望更灵活地更新搜索结果,或者不符合我们的审核清单,亦或网站部署在防火墙后方,可能需要自行运行爬虫程序。

DocSearch 的整个代码库都是开源的,我们已将其打包为 Docker 镜像以便您更便捷地使用。

环境配置

您需要将 Algolia 应用 ID 和管理员 API 密钥设置为环境变量。若尚未注册 Algolia 账户,请先创建账户

  • APPLICATION_ID 设置为您的 Algolia 应用 ID

  • API_KEY 设置为您的 API 密钥。请确保使用具有索引写入权限的密钥,该密钥需包含 addObjecteditSettingsdeleteIndex ACL 权限。

为方便操作,可在代码库根目录创建 .env 文件进行配置。

APPLICATION_ID=YOUR_APP_ID
API_KEY=YOUR_API_KEY

通过 Docker 镜像运行爬虫

您可以使用打包好的 Docker 镜像抓取网站内容。需先安装 jq(轻量级命令行 JSON 处理器)

随后根据您的配置启动爬虫。建议查阅专属配置文档

docker run -it --env-file=.env -e "CONFIG=$(cat /path/to/your/config.json | jq -r tostring)" algolia/docsearch-scraper

抓取完成后,可跳转至集成步骤

通过源代码运行爬虫

安装依赖

爬虫是基于 scrapy 的 Python 工具。我们推荐使用 pipenv 配置 Python 环境。

若计划启用浏览器模拟渲染(即 js_render 设为 true),需完成以下额外步骤。否则可跳过。

安装 ChromeDriver

部分网站依赖 JavaScript 渲染。我们的爬虫基于无头 Chrome 模拟环境运行,需配置 ChromeDriver。

至此准备工作已完成。

运行爬虫

执行 pipenv shell 激活虚拟环境后,可通过以下命令启动抓取:

$ ./docsearch run /path/to/your/config.json

或使用 Docker 镜像运行:

$ ./docsearch docker:run /path/to/your/config.json

程序将开始抓取,从解析页面中提取内容,并将构建的记录推送到 Algolia。

创建新配置

执行 ./docsearch bootstrap 创建配置。命令行将引导您输入信息并生成基础 JSON 配置文件。

$ ./docsearch bootstrap
# Enter your documentation url
start url: http://www.example.com/docs/
# Pick another name, or press enter
index_name is example [enter to confirm]: <Enter>

=================
{
"index_name": "example",
"start_urls": [
"http://www.example.com/docs/"
],
"stop_urls": [],
"selectors": {
"lvl0": "FIXME h1",
"lvl1": "FIXME h2",
"lvl2": "FIXME h3",
"lvl3": "FIXME h4",
"lvl4": "FIXME h5",
"lvl5": "FIXME h6",
"text": "FIXME p, FIXME li"
}
}
=================

将此配置文本保存为 example.json 文件(后续抓取将用到)。您可参考现有配置列表

测试搜索结果

执行 ./docsearch playground 可测试搜索结果。该命令将打开含搜索框的网页,支持实时测试索引结果。

Playground

注意:若命令执行失败(常见于非 Mac 设备),可通过在 ./playground 子目录启动实时服务器达到相同效果。

集成部署

当你对配置满意后,可以按照此处的说明将下拉菜单集成到你的网站中。

区别在于你还需要在 docsearch() 实例中添加 appId 键。另外,请务必使用搜索 API 密钥(而非爬取时使用的写入 API 密钥)。

docsearch({
appId: '<APP_ID>', // Add your own Application ID
apiKey: '<API_KEY>', // Set it to your own *search* API key
[] // Other parameters are the same
});

帮助

运行 ./docsearch 命令(不带参数)可查看所有可用命令列表。

请注意:该命令行工具是 Algolia 内部运行免费托管版的工具,部分命令可能与你无关。