Scrapy框架架构图(图片来自网络)
简要概括:
把整个Scrapy框架比喻成一个古代部队。
1.引擎:指挥官,部队的所有动向均需要向指挥官汇报,指挥官负责协调各个单位、部门的运作;
2.调度器:可以看成队列,给同一单位的士兵编号,决定冲锋顺序;
3.下载器:部队前锋;
4.爬虫:部队主力;
5.管道工厂:后勤,收拾战场;
思路:
1.爬取数据分为三个阶段,第一个阶段是获取到每一区块总体数据量
2.爬取数据量较大,必须支持断点续爬。对每个待爬取的数据打上标识,标识分为(0:待爬取;2:重复数据;7:进入队列;8:已爬取;9:已入库)
需要解决的问题:
1.此项目爬虫基本是通过POST方法获取AJAX异步请求的JSON数据,因此需要改写默认START_REQUESTS方法;
2.请求量较大,必须使用IP代理池,而且IP代理池是需求自动维护更新的;
3.某些字段值太长,甚至超过4000,注意,不建议使用LONG类型,因为LONG类型意味着此字段你几乎不能在数据库中操作;
4.并发可控;
5.加入队列或者爬取到数据后需要更改数据库中状态,为避免多线程交叉改变数据状态,必须携带唯一值(FID);