crawler 使用jQuery风格实现,解决了网页数据解析和保存的问题,这次为了获得全国行政区划五级数据,更进一步将保存的数据录入了数据库,后端使用JavaScript+beetlsql实现,并使用APIJSON提供数据接口访问。参考设计文档,接口文档。
- 爬虫配置与驱动
crawler.district,这里是每个层级的网页数据分析脚本,爬虫驱动后会递归执行配置好的五级脚本,并将数据存入redis
数据设计如下,使用redis的map结构存储,然后创建相应的表结构,以便数据处理时对应入库
问题1:数据抓取时cpu飙升,通过redis配置休眠时间控制速度,避免过快导致系统崩溃
问题2:数据抓取时会输出大量日志,通过logserver控制日志级别后可以提高速度 - 数据处理与入库:
这段代码有点冗长,但还算好理解:
1,util提供了3种操作:hgetall获取保存到redis的map数据,get(json,name)获取json里的字段,insert插入数据
2,.stream().limit(1),限制处理1条数据,可以观察日志分析逻辑是否正确,然后才注释此行并全量解析数据
3,counts={},统计数据条数,执行完成后与数据库对比数据量是否匹配
处理代码使用了beetl、beetlsql、hutool
- 数据查询与接口
数据接口使用了APIJSON,请求正文如下,为了支持中文拼音排序,扩展了pinyinSort自定义函数
订购接口请访问showapi,或联系博主获取数据。
渝公网安备 50011302000290号