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