爬虫脚本重构引发的思考

爬虫代码重构

背景

  1. 开发时间短,造成功能代码没有有效的分割,造成代码无限扩充的厉害。
  2. 使用本地缓存,导致数据反复爬取之后的数据清洗非常麻烦。
  3. 没有定时的去执行爬取任务。
  4. xpath的读取没有抽取。
  5. redis和mongo缺失。

解决过程

  1. 使用redis构建爬取任务队列;队列为空,重新获取数据,回填到redis中。以此实现数据的增量更新。
  2. 使用mongodb存储数据,便于对数据解析错误时的清洗。
  3. 重构代码,将xpath和对应的爬虫配置分离。
  4. 重构代码,将核心功能的代码聚集,抽取成模块;使模块间的耦合降到最低。

App爬虫脚本的构建

  1. 定位要爬取的App,在繁杂的加密点中,聚焦核心的问题。主要是签名的问题。突破签名,不间断请求数据做压力测试等,查看App的风控点以及推理运维监控点。
  2. 爬取任务队列的构建,爬取数据的中间化数据保存。
  3. 对爬取的数据,提取想要的数据,形成结构化的数据。保存到数据库中。
  4. 对解析出错的字段,重新从mongo中捞出,清洗错误数据。
  5. log日志文件分析,形成数据分析结果,评估App开发过程中的缺点和优点等
  6. 对于App爬取过程中的假数据的处理等。
  7. 对于App 封杀device_id的情况,避免封杀device_id等情况出现等。
  8. App实时任务和离线任务的分开处理等。

如何保证数据的安全

数据保护和数据爬取

最终我们会得到以下几大块:
1. 任务调度模块:负责爬取任务的生成和分配等
2. 脚本爬虫模块:各个App的爬虫脚本
3. 代理服务器模块:负责代理资源的分配等。
4. 数据存储模块:实现数据的存储和清洗以及合并到业务库中。
5. 日志模块:记录各个模块的运行情况,定位各个模块的崩溃问题。
6. 前端模块:负责爬取数据的展示和报表查看等。
7. 自动部署模块:将各个模块的合并,提交到服务器并运行等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容