Written by
彭一
on
on
关于垂直网站爬虫的思考
我的思考,聚焦于技术实现与指标体系两个方面:在技术层面,涵盖了调度策略、页面解析、异步并发、反反爬机制、结构化提取与数据清洗等关键模块的设计与协同;在指标维度,则需要从抓取成功率、字段完整率、数据准确性、系统吞吐量、资源利用率等角度出发,构建可量化的质量与性能评价体系,以支撑爬虫系统的高效、稳定与可维护性。
基本指标和难点¶
- 实时性
- 新的内容,需要很快的抓到
- 全面性
- 老的内容和新的内容都需要能抓到,不能只侧重某一方面
- 新的内容在一定时间后就是老的内容了
- 基于1,可能新内容要抓取的优先级更高,但不能只抓新的,不要旧的
- 去除重复
- 不同的网站可能有相同的内容,抓完后可能需要去掉重复的内容
- 有写网站的url后面带有随机数,或者无效的参数,但是内容却是固定的,需要想办法去掉,只抓一次
- 去除循环抓取
- 各个网站之间可能相互link,需要职能的分析出已经抓取过的
- 可持续抓取性
- 一个入口可以一直在抓取,无需人工干预,7*24小时服务
- 人工干预
- 抓取速度
- 抓取进程个数
- 可能被封
- 利用6 降低抓取频率
- 多IP对外抓取
- 通过Proxy
子系统简单分析¶
- crawler,专门负责抓取的服务,输入是一个url,输入是一个url对应的页面
- scheduler,专门负责crawler的调度,能够控制crawler的各方面参数,可能需要多进程共享
- linkdb, 用来存取link的,非常简单,只有增删改查,注意大数据,要提供对于link抓取优先级的接口,永远提供优先级的topN个link
- repository, 用来存取content的,非常简单,只有增删改查,注意大数据
- analyzer, 分析repository的内容,进行去重复,为索引服务
抓取模型¶
- 多线程
- 实现简单,python的多线程无法重复利用多核
- 多进程
- 实现简单,python的多进程能利用多核
- 异步
- 实现复杂,重复利用多核
- 性能高