使用php+phantomjs构建一只简单爬虫的开发思路

唠叨:

最近频繁的给客户做采集功能,既然代码无法公布,所以一直想写个思路类的文章.
既然是简单的爬虫,那么一切自然以简单为原则,能少用的都少用,比如python和Redis这两个神兵利器就被我省略了.
打造这只虫子就像是樵夫砍柴一般,该磨刀还是要磨刀.

远观:

拜拜山头

对象站点:国内知名电商平台如蘑菇街,唯品会等.
实现需求:站群模式可将对方店铺或商品采集根据指定接口分发数据,并过滤指定关键字及自定义商品售价

磨刀:

利刃在手

1.安装=无头浏览器phantomjs,类似的无头浏览器或者在他们基础上衍生的东西有很多,但phantomjs基本上可以满足需求,用法也简单,所以本次就选用它了.
2.安装=多线程扩展pthreads,由于python和Redis对于一些phper而言增加了学习成本(话说现在会php的不懂他两的应该很少了吧),由于phantomjs从加载到渲染是比较慢的,为了提高效率,我们需要用到多线程.

上山:

山里事儿多

1.随机代理:因为采集是全自动化的,需要不断的访问被爬的站点,为了防止被屏蔽,从代理站抓一些IP来掩饰是不错的方法.
2.URL自动增补:有些网站页面的的url用的相对路径,所以补全是必备的.
3.深度控制:例如采集商品的时候很容易因为关联商品而陷入无止境的挖掘
4.任务分布:虽然没有用到Redis,本次的采集需要将任务下发给其余站点
5.内容过滤:现在比较头疼的是一些商城或店铺有水印,这个暂时无解.

砍柴:

由于本次采集在创建任务时已经预设了采集对象,例如按店采集,按商品采集.所以开头的第一步就省略了.

使用php+phantomjs构建一只简单爬虫的开发思路_第1张图片

你可能感兴趣的:(使用php+phantomjs构建一只简单爬虫的开发思路)