pcntl_fork或者swoole_process实现多进程并发。按照每个网页抓取耗时500ms,开200个进程,可以实现每秒400个页面的抓取。
创新互联服务项目包括蒙阴网站建设、蒙阴网站制作、蒙阴网页制作以及蒙阴网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,蒙阴网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到蒙阴省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
curl实现页面抓取,设置cookie可以实现模拟登录
simple_html_dom 实现页面的解析和DOM处理
如果想要模拟浏览器,可以使用casperJS。用swoole扩展封装一个服务接口给PHP层调用
在这里有一套爬虫系统就是基于上述技术方案实现的,每天会抓取几千万个页面。
能够做网络爬虫的编程语言很多,包括PHP、Java、C/C++、Python等都能做爬虫,都能达到抓取想要的数据资源。针对不同的环境,我们需要了解他们做爬虫的优缺点,才能选出合适的开发环境。
(一)PHP
网络爬虫需要快速的从服务器中抓取需要的数据,有时数据量较大时需要进行多线程抓取。PHP虽然是世界上最好的语言,但是PHP对多线程、异步支持不足,并发不足,而爬虫程序对速度和效率要求极高,所以说PHP天生不是做爬虫的。
(二)C/C++
C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发,运行效率和性能是最强大的,但是它的学习成本非常高,需要有很好地编程知识基础,对于初学者或者编程知识不是很好地程序员来说,不是一个很好的选择。当然,能够用C/C++编写爬虫程序,足以说明能力很强,但是绝不是最正确的选择。
(三)Java
在网络爬虫方面,作为Python最大的对手Java,拥有强大的生态圈。但是Java本身很笨重,代码量大。由于爬虫与反爬虫的较量是持久的,也是频繁的,刚写好的爬虫程序很可能就不能用了。爬虫程序需要经常性的修改部分代码。而Java的重构成本比较高,任何修改都会导致大量代码的变动。
(四)Python
Python在设计上坚持了清晰划一的风格,易读、易维护,语法优美、代码简洁、开发效率高、第三方模块多。并且拥有强大的爬虫Scrapy,以及成熟高效的scrapy-redis分布式策略。实现同样的爬虫功能,代码量少,而且维护方便,开发效率高。
其实用PHP来爬会非常方便,主要是PHP的正则表达式功能在搜集页面连接方面很方便,另外PHP的fopen、file_get_contents以及libcur的函数非常方便的下载网页内容。
具体处理方式就是建立就一个任务队列,往队列里面插入一些种子任务和可以开始爬行,爬行的过程就是循环的从队列里面提取一个URL,打开后获取连接插入队列中,进行相关的保存。队列可以使用数组实现。
当然PHP作为但线程的东西,慢慢爬还是可以,怕的就是有的URL打不开,会死在那里。
据我所知,很多第三库都可以实现你所要求的这些php爬虫特征。
如phpQuery,phpCrawl,phpSpider,Snoopy。
如果使用curl,也是相当不错的。但你要做的事情更多。它只负责请求和下载,并没有实现爬虫的核心。别的事情都要自己做,至少你得先封装一下。
如果你任务比较紧迫,建议选择那些第三方库,集成一下,能用先用着。
业务时间还是了解一下爬虫的方方面面比较好。
xpath简单,拿到源码,交给phpQuery就可以,像使用jQuery一样,不需要正则。还有一些是需要动态渲染才能拿到数据的,得用无头浏览器,如phantomjs,去处理。
速度不会成为问题,有问题也是因为速度太快,被网站发觉然后屏蔽你,而不是太慢。哈哈。
个人认为比较难的是怎么针对反爬虫策略,怎么做全自动化。还是建议你去看几本关于爬虫的书。