phantomJs入门

作者: 子非鱼_fish | 来源:发表于2018-04-05 22:45 被阅读0次

    想学爬虫,最初学习的是Python,学了urllib,BeautifulSoup,但学了段时间后想爬几个网站试试,发现一个很大问题:很多网站通过客户端渲染,直接读取源码根本读不到最终展现出来的html元素。

    科普一下,网页渲染可分为服务端渲染和客户端渲染,前者是指你在浏览器地址栏输入一个网址,Web服务器处理请求过程就将所有需要呈现的html元素都构造好了,浏览器收到响应就直接render出页面,客户端工作量少;后者是指Web服务器仅仅将必要的信息作为响应传到浏览器,浏览器需要根据响应进行二次处理,比如ajax请求,再根据ajax请求的结果构造html。

    urllib不具备js执行能力,自然不能模拟浏览器执行js请求ajax等效果,于是,所谓无头浏览器phontmJs就出现了,借助这个工具可以模拟webkit执行,还可以包含更多js库比如jQuery等对页面的js执行进行扩展。

    下面介绍下phantomJs的入门知识:

    1)安装(以Windows为例):

    通过 http://phantomjs.org/download.html 下载编译后的可执行phantom.exe,只要这一个exe就可以包含所有需要的内容,无需其他依赖项,方便快捷绿色环保。

    2)IDE及调试选择:

    个人喜欢使用 VS Code,这个IDE还是更新很快的,使用方面也越用越顺手,一个额外的福利是存在可用于 VS Code 的 phantomJs 调试插件:Debugger for PhantomJS,这就是说可以在VS Code 中直接加断点调试代码,否则就只能按照官方说法使用额外参数到谷歌浏览器调试,这种调试我尝试过觉得很不好用。

    3)代码以及调试准备:

    在VS Code中安装 Debugger for PhantomJS  很简单,只要在左侧扩展选项中搜索 PhantomJS 该插件点击安装,安装完毕后重新启动VS Code即可,另外,需要在VS Code中调试代码需要新增一个 launch.json 文件,不用手动新增,在左侧调试选项中点击齿轮图标新增调试配置即可,详细可参照官方文档

    launch.json配置文件的核心参数如下:

                "file": "${workspaceRoot}/src/show_title.js",

                "webRoot": "${workspaceRoot}/src",

                "runtimeExecutable": "C:/Program Files/phantomjs/bin/phantomjs.exe",

                "sourceMaps": false

    file:需要调试的js文件,即启动文件

    webRoot:源文件根目录(我创建了一个src文件夹)

    runtimeExecutable:安装环节所下载的exe文件绝对路径

    sourceMaps:是否使用map,目前设定false即可

    4)真正的编码开始啦:

    到此可以开始coding了,我们就在src文件夹创建 show_title.js文件:

    var page = require('webpage').create();

    page.open("https://www.baidu.com", function(status) {

      if ( status === "success" ) {

          console.log(page.title);

      } else {

          console.log("Page failed to load.");

      }

      phantom.exit(0);

    });

    上面的代码打开了百度首页,并将其页面标题打印出来,代码很简单,涉及到 webpage 的几个简单知识点,先给大家瞅瞅API,总结方面下次再补充,睡觉去。

    相关文章

      网友评论

        本文标题:phantomJs入门

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