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,总结方面下次再补充,睡觉去。

相关文章

  • 2021-03-12下载PhantomJS

    PhantomJS的新手?阅读并学习《快速入门》[https://phantomjs.org/quick-star...

  • PJS001 PhantomJ简易入门

    PJS001 PhantomJ简易入门 PhantomJS是什么 PhantomJS是一个基于webkit的Jav...

  • phantomJs入门

    想学爬虫,最初学习的是Python,学了urllib,BeautifulSoup,但学了段时间后想爬几个网站试试,...

  • phantomjs快速入门

    一、phantomjs介绍(1)一个基于webkit内核的无界面浏览器,即没有UI界面,即它就是一个浏览器,只是其...

  • phantomjs入门使用

    PhantomJS是一个命令行工具。确保您熟悉命令提示符或PowerShell(在Windows上)或终端(在ma...

  • 稍微入门,学习Phantomjs

    在某些情况下,我们需要爬取一些网页,python有许多强大的功能库提供我们选择使用。对于一些动态网页,也就是一些j...

  • PhantomJS入门教程

    PhantomJS 是一个无界面的Webkit内核浏览器,内置JavaScript API,对DOM操作,CSS选...

  • Python 爬虫杂记 - PhantomJS相关

    selenium phantomJS相关 1. 设置phantomJS请求头: 2.设置PhantomJS禁用图...

  • phantomjs相关学习

    phantomjs使用的学习 前导 PhantomJS能做什么 PhantomJS使用QtWebKit作为它核心浏...

  • Selenium----PhantomJS被标记为过时的应对措施

    今天使用PhantomJS时,Selenium提示PhantomJS被标记不赞成,我就蒙了。PhantomJS可是...

网友评论

    本文标题:phantomJs入门

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