自行运行爬虫
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
如果您希望更灵活地更新搜索结果,或者不符合我们的审核清单,亦或网站部署在防火墙后方,可能需要自行运行爬虫程序。
DocSearch 的整个代码库都是开源的,我们已将其打包为 Docker 镜像以便您更便捷地使用。
环境配置
您需要将 Algolia 应用 ID 和管理员 API 密钥设置为环境变量。若尚未注册 Algolia 账户,请先创建账户。
-
APPLICATION_ID设置为您的 Algolia 应用 ID -
API_KEY设置为您的 API 密钥。请确保使用具有索引写入权限的密钥,该密钥需包含addObject、editSettings和deleteIndexACL 权限。
为方便操作,可在代码库根目录创建 .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。
-
根据操作系统和 Chrome 版本安装对应驱动,建议使用最新版本
-
在
.env文件中设置环境变量CHROMEDRIVER_PATH,该路径需指向解压后的驱动文件
至此准备工作已完成。
运行爬虫
执行 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 可测试搜索结果。该命令将打开含搜索框的网页,支持实时测试索引结果。
注意:若命令执行失败(常见于非 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 内部运行免费托管版的工具,部分命令可能与你无关。