我的思考,聚焦于技术实现指标体系两个方面:在技术层面,涵盖了调度策略、页面解析、异步并发、反反爬机制、结构化提取与数据清洗等关键模块的设计与协同;在指标维度,则需要从抓取成功率、字段完整率、数据准确性、系统吞吐量、资源利用率等角度出发,构建可量化的质量与性能评价体系,以支撑爬虫系统的高效、稳定与可维护性。

基本指标和难点

  1. 实时性
  2. 新的内容,需要很快的抓到
  3. 全面性
  4. 老的内容和新的内容都需要能抓到,不能只侧重某一方面
  5. 新的内容在一定时间后就是老的内容了
  6. 基于1,可能新内容要抓取的优先级更高,但不能只抓新的,不要旧的
  7. 去除重复
  8. 不同的网站可能有相同的内容,抓完后可能需要去掉重复的内容
  9. 有写网站的url后面带有随机数,或者无效的参数,但是内容却是固定的,需要想办法去掉,只抓一次
  10. 去除循环抓取
  11. 各个网站之间可能相互link,需要职能的分析出已经抓取过的
  12. 可持续抓取性
  13. 一个入口可以一直在抓取,无需人工干预,7*24小时服务
  14. 人工干预
  15. 抓取速度
  16. 抓取进程个数
  17. 可能被封
  18. 利用6 降低抓取频率
  19. 多IP对外抓取
  20. 通过Proxy

子系统简单分析

  1. crawler,专门负责抓取的服务,输入是一个url,输入是一个url对应的页面
  2. scheduler,专门负责crawler的调度,能够控制crawler的各方面参数,可能需要多进程共享
  3. linkdb, 用来存取link的,非常简单,只有增删改查,注意大数据,要提供对于link抓取优先级的接口,永远提供优先级的topN个link
  4. repository, 用来存取content的,非常简单,只有增删改查,注意大数据
  5. analyzer, 分析repository的内容,进行去重复,为索引服务

抓取模型

  1. 多线程
  2. 实现简单,python的多线程无法重复利用多核
  3. 多进程
  4. 实现简单,python的多进程能利用多核
  5. 异步
  6. 实现复杂,重复利用多核
  7. 性能高