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

很长一段时间,由于工作需要,常常需要在几百台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可以做到以下功能:

  • 生成页面的截图和PDF
  • 抓取SPA(通过多方渲染生成最终页面的单页应用)
  • 从网站抓取你需要的内容。
  • 自动表单提交,UI测试,键盘输入等
  • 创建一个最新的自动化测试环境。使用最新的JavaScript和浏览器功能,直接在最新版本的Chrome中运行测试。
  • 捕获您的网站的时间线跟踪,以帮助诊断性能问题。

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

  • JavaScript的编程语言,门槛较低,前端人员也能进行后台开发,是的,前后端语言互通
  • 具有非阻塞的io模式,处理高并发场景性能更高,并且在机器性能较低的情况下也能拥有高性能和出色的负载
  • 非常便利的异步驱动
  • 广受诟病的单进程,单线程已经在高版本(V8和以上)的node中得到解决
  • 同时也由于Js的灵活性(大量函数式编程、匿名函数),所以不容易看懂别人写的代码,造成后期维护上的不便利

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 现状 好久好久没有更新博客了,应该有一个月了吧,这段时间内,好忙,公司的业务在上涨期,但是却把下面的一个小朋友砍掉...
    jb2阅读 1,419评论 0 2
  • 前言 离上一篇更新的博文应该过了挺久的了(python爬虫(上)–请求——关于旅游网站的酒店评论爬取(传参方法))...
    Mrhyden阅读 555评论 0 0
  • 1.puppeteer简介 puppeteer是一个node库,是Google chrome团队官方的无界面(he...
    伊人风采_690d阅读 7,823评论 0 11
  • 再见 最近几天没有写教程,但是一直在翻资料。 在昨天,我翻到了一条消息:PhantomJS宣布暂停开发。 最初我是...
    MonkeyLei阅读 245评论 0 0
  • 这个星期一,我们班举行了一个难忘又有趣的班会课。 经过老师的安排,我们班第一节班会课由班长和课代表以感...
    蔡玲珑阅读 1,469评论 0 1

友情链接更多精彩内容