美文网首页
有关爬虫的一些记录和思考之一爬虫端

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

作者: jty_cef8 | 来源:发表于2020-04-21 18:32 被阅读0次

    很长一段时间,由于工作需要,常常需要在几百台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解析都值得记录。

    相关文章

      网友评论

          本文标题:有关爬虫的一些记录和思考之一爬虫端

          本文链接:https://www.haomeiwen.com/subject/voppihtx.html