关于algolia
algolia是一个云搜索服务提供商,用户可以配置或者上传自己的需要搜索的数据到algolia,然后在dashboard中提供了数据统计和搜索优化的功能。
文档搜索docsearch
docsearch用为文档网站配置文档搜索功能。
bootstrap,vue,react等框架的文档都使用docsearch来提供快速,层次分明的文档搜索体验。
docsearch提供爬虫来帮助用户自定义搜索数据,jssdk在前端配置接入。
接入方式
docsearch本身提供了类似于百度统计的接入方式,但是对于公司内网的用户,docsearch官方的爬虫无法访问到。 为此,提供了另外一种解决方案。用户通过官方提供的爬虫项目,然后部署在内网后爬取数据,并配置好algolia的index,数据将会自动上传到algolia管理后台。
安装爬虫docsearch-scraper
克隆官方的爬虫项目,然后安装,但是官方的镜像对于国内的用户不太友好,特别是docker编译的时候,会报nodejs未安装的错误。可在Dockerfile.base中增加如下配置。
RUN apt-get install nodejs-legacy
RUN apt-get install npm --force-yes -y
RUN npm set registry https://registry.npm.taobao.org
另外会出现python包缺失的情况,如果在执行过pip install --user -r requirements.txt
依然出现有包丢失的情况,需要通过pip手动安装缺失的包。
爬虫配置
config.json为默认的配置文件
{
"index_name": "test_index",
"start_urls": [
"http://xxxx.xxx.com/books/wand/*"
],
"stop_urls": [],
"selectors": {
"lvl0": ".book-element--article h2",
"lvl1": ".book-element--article h3",
"lvl2": ".book-element--article h4",
"lvl3": ".book-element--article table tr td:first-child",
"lvl4": ".book-element--article p",
"text": ".book-element--article code, .book-element--article table td"
}
}
index为索引名,需要事先在algolia控制台创建,并在爬虫的.env文件中配置APPLICATION_ID和API_KEY。
start_urls指定开始页面
selectors用来选择被抓取的内容,支持css选择器。
lvl*是指定内容层级
如图所示,匹配到文本的同时,也会寻找其层级关系