zoukankan      html  css  js  c++  java
  • phantom的使用

    phantom页面加载

    通过Phantomjs,一个网页可以被加载、分析和通过创建网页对象呈现,访问我的博客园地址:http://www.cnblogs.com/paulversion/p/8393842.html,并将当前页面进行截图保存。pageload.js代码如下:


    var page = require('webpage').create();
    page.open("http://www.cnblogs.com/paulversion/p/8393842.html",function(status){

    console.log("Status:"+ status);
    if(status === "success"){

    page.render("floki.jpg")
    }

    phantom.exit()

    })

    在命令行中运行

    phantomjs pageload.js

    输出内容为:Status:success,并在当前目录下生成对网页的截图floki.jpg

    除了打开网页截图之外,还可以对网页的打开进行测速。下面的例子用来计算一个网页的加载速度,同时还用到了给javascript脚本传递参数的功能.speed.js代码如下:

    var page = require('webpage').create()
    var system = require('system')
    var time, address

    if( system.args.length === 1){

    console.log('Usage: speed.js<some URL>')

    phantom.exit();
    }

    t = Date.now()

    address = system.args[1]

    page.open(address,function(status){

    if(status != 'success'){
    console.log('Fail to load the address');
    }else{

    t = Date.now() - t;

    console.log('Loading' + system.args[1])
    console.log('Loading time'+ t + 'msec')
    }

    phantom.exit()

    })

    代码评估

    为了评估网页中的javaScript代码,可以利用evaluate。这个执行是沙盒式的,它不会去执行网页外的javascript代码。evaluate方法可以返回一个对象,然而返回值仅限于对象,不能包含函数.

    比如我们可以使用evaluate方法获取http://www.cnblogs.com/paulversion/p/8393842.html页面的标题,title.js代码如下

    var url = 'http://www.cnblogs.com/paulversion/p/8393842.html'

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

    page.open(url,function(status){

    var title = page.evaluate(function(){

    return document.title;
    })

    console.log('Page title is ' + title);

    phantom.exit()

    })

    在命令行中输入;phantomjs --output-encoding=gbk title.js

    输出结果为 Page title is Python动态网站的抓取 - paulversion - 博客园

    网络监控

    因为PhantomJS允许检验网络流量,因此它适合分析网络行为和性能,实现对网络的监听。当向远程服务器发送请求时,可以使用onResourceRequested和onResourceReceived两个方法嗅探所有的资源请求和响应。实例net.js代码如下

    var url = 'http://www.cnblogs.com/paulversion/p/8393842.html'

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

    page.onResourceRequested = function(request){

    console.log('Requsest '+ JSON.stringify(requsest,undefined,4));
    }

    page.onResourceReceived = function(response){

    console.log('Receive ' + JSON.stringify(response,undefined,4))

    }

    page.open(url)

    在命令行中输入

    phantomjs net.js

    页面自动化

    PhantomJS可以加载和处理一个网页,非常适用于自动化处理,PhantomJS中标准JavaScript的DOM操作和CSS选择器都是生效的。如下html.js代码

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

    console.log('The default user agent is'+page.settings.userAgent)

    page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

    page.open('http://movie.mtime.com/249736/',function(status){

    if(status !== 'success'){

    console.log("Unable to access network")

    }else{

    var ua = page.evaluate(function(){

    return document.getElementById('ratingRegion').textContent;
    })

    console.log(ua)

    }

    phantom.exit()

    })

    执行命令 phantomjs --output-encoding=gbk  html.js 输出 

    The default user agent isMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/538.1 (
    KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1
    8.0总分:101,718人评分 1,132人想看音乐 画面 导演 故事 …票房:4.83 亿元

  • 相关阅读:
    计算机与软件工程 作业一
    软件工程作业6 咸鱼不闲团队 校园二手交易系统
    软件工程 作业5
    计算与软件工程 作业4
    软件工程第四次作业评价总结
    计算与软件工程 作业3
    计算与软件共程作业2
    计算与软件工程 作业一
    计算与软件工程作业六
    计算与软件工程作业五
  • 原文地址:https://www.cnblogs.com/paulversion/p/8398315.html
Copyright © 2011-2022 走看看