有关爬虫的一些记录和思考之一爬虫端

2020-04-21  本文已影响0人  jty_cef8

很长一段时间,由于工作需要,常常需要在几百台VPS上面部署爬虫程序,也是时候对这些用到的技术做一些总结和分享,考虑到敏感性,不会涉及代码

爬虫端

过时的PhantomJS

翻看以前使用的老爬虫程序,会看到很多和PhantomJS相关的代码,为什么PhantomJS会较广泛的应用于爬虫,以及为什么现如今已经过时了呢?

PhantomJS作为比较富盛名的WebKit API,具体说明和文档可以参考PhantomJS

简单来说,按照官网的说法,PhantomJS是一个无界面的,可脚本编程的WebKit浏览器引擎。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG。
所以如果我们并非简单爬取html,而是需要获取JS渲染的页面,亦或是需要进行一些登录操作,是可以采用PhantomJS,同时也很好支持自动化测试。

为什么说它已经过时了呢,因为PhantomJS目前最新版本是2.1.1,发布时间是2016年3月份(#-.-),所以新版的浏览器不是很兼容PhantomJS,开发者在使用中可能会遇到很多问题,而且Selenium也不再支持PhantomJS。

经常需要自动化测试或者使用爬虫的小伙伴应该知道Selenium,需要模拟用户操作浏览器或者针对一些反爬厉害的网站时,通常都是使用Selenium,原理大致就是每一条Selenium脚本,都会创建一个HTTP请求,发送给浏览器驱动,驱动中的HTTP Server接受到请求之后,操控对应浏览器执行脚本步骤,浏览器会将执行结果返回给HTTP Server,HTTP Server再返回给Selenium脚本

新生代主流Puppeteer

我想很多人应该在Puppeteer发布的时候,就成了它的忠实用户

Puppeteer是Google Chrome 团队官方的无界面Headless Chrome工具,下载地址Puppeteer

Puppeteer是基于node开发,所以需要搭配Node运行环境,至少是v6.4.0以上,并且安装时会下载最新版本的 Chromium,根据官方的描述,Puppeteer可以做到以下功能:

是不是连Selenium都不用了,手动操作浏览器的大部分操作都可以使用Puppeteer来完成,为了更好的支持Puppeteer,所以爬虫端一般也都是使用node.js来开发),结合我自己的使用和开发来看,node的项目有几个点值得说一下:

有关爬虫端的东西就暂时写到这,后续我会补充其他部分,爬虫的任务分发、html解析都值得记录。

上一篇下一篇

猜你喜欢

热点阅读