小项目:node抓取搜狗拼音输入法的细胞词库链接并下载到本地

项目地址:sougou_cell_dict

背景

这个项目是源于工作中需要扩充mmseg3分词工具的词库,选择搜狗输入法的细胞词库作为扩充来源。由于细胞词库众多,不打算使用一个个下载的方式,下载词库只是扩充mmseg3的第一步工作,后面还需要使用其它工具对词库文件进行转换,以便应用到mmseg3里面去。由于以前也没怎么写过node相关的工具,更没有接触过爬虫类的功能,所以借助这样一个机会,打算来试试这方面的编码。观察了一下搜狗输入的细胞词库的相关页面,发现它对细胞词库有比较清晰的组织方式,而且下载链接也很直接,利用爬虫的话,比较好处理相关的数据。所以快速学习了下node爬虫和node下载文件的几个知识点,开发出了这样一个小项目。

利用这个小项目,能够自动抓取并存储搜狗细胞词库全部的分类结构以及每个叶子分类节点下所有的词库及其下载地址;然后根据词库的分类结构,构建好各个词库在本地磁盘的文件夹层次关系;最后根据下载地址,下载存储到对应的目录。本地通过文件夹结构可清晰地看到词库文件的组织层次,所以后面需要哪些词库,都可以直接从对应的目录里面去copy即可。

本地下载好的结构如图所示:

使用方式

第一步

安装依赖:

1
npm install

第二步

抓取词库,运行:

1
node fetch

此脚本运行完以后,将在./fetch目录下生成两个json文件:cell_dict.jsondict_nav_cate.jsoncell_dict.json存储抓取到的细胞词库的信息。dict_nav_cate.json存储抓取到的细胞词库分类结构相关的信息。

第三步

下载词库,运行:

1
node download

此脚本运行后,会在./downloads目录下,存放下载完成的词库文件。考虑到一些请求错误的情况,此脚本可能需要多次运行才能下载完所有的文件(大概有1万多个文件),重复运行过程中,已下载过的词库文件不会再次发起请求下载。

下载失败的记录存放于./download_error_list.json文件当中。

其它

看了一些词库的相关词条,发现搜狗里面的词库质量低的还真不少,这些词库文件要应用到产品当中,还需要好好甄别才行。