但在堆代码以前,先预研一下,而后想一想下面几个问题. javascript
1,你定制爬虫的目标
2,预计的规模
3,是否须要js支持
4,是单次爬取仍是周期性爬取
5,其余
6,突破网站的防爬取策略 java
如上几个问题也并不是彻底独立,他们一般相互影响.如固定的爬取目标一般有可预计的爬取规模.
etc... web
1,爬取的目标,你所须要爬取的网站url是固定的集合仍是变更的.对于相似比价这种爬取目标固定的,问题要略简单一点,你须要爬取的是那些站,能遇到的问题将在一次完整爬取发生.但对于非固定目标爬取则略困难.一个场景是我从搜索引擎搜索一系列关键字,将得到的结果做为目标爬取.很难确保你写的爬虫在全部目标上工做都是正常的. 浏览器
2,爬取规模影响方面不少,对于一次固定的小规模爬取,能够彻底不考虑各种优化.但对于规模较大的爬取,则须要考虑各类优化.有以下方面.1,分布式.2,各部分的效率,如内容解析效率(正则,xpath等),连接提取效率,3,settings中相关参数的配置. 缓存
3,是否须要js(javascript)支持,现在愈来愈多的网站使用js生成内容.也有可能出于防爬取的目的采用js.根据具体状况采用模拟js相关动做解决或使用js引擎,webkit之类完整执行. 分布式
4,单次爬取较易,周期性爬取涉及周期长短,如何保障周期内完成此次爬取任务.根据任务量和实际需求肯定爬取周期. 优化
5,其余,如何支持http缓存来提升效率,是否支持iframe.是否须要在规范上,行为上更像一个浏览器(浏览器模拟) 网站
6,各类防爬取策略及其相关在此系列中将不被说起. 搜索引擎
接下来的文章将按问题的流行度完成,你猜第一篇是?-.-um,第一篇是javascript支持.
我正在下载一个大文件.因此连续写了两篇...
大概跑爬虫时发下一篇... url