0%

PhantomJS高端用法:JS DOM操作

最近有拿起来PhantomJS看了看,之前只是简单用过一下,因为JS当时基本不会,所以觉得很麻烦就没有继续使用。现在看起来这个很好玩的,所以拿出来看一看。

下面一个例子是用于演示获取豆瓣注册链接的内容:

var url = 'http://www.douban.com/';
var ajaxUrl = 'http://cdn.staticfile.org/jquery/2.0.3/jquery.min.js';
var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)';
console.log('The default user agent is ' + page.settings.userAgent);
//phantom.exit();

page.open(url, function (status) {
    if (status !== 'success') {
        console.log('Unable to access the website');
    } else {
        // 加载jQuery
        page.includeJs(ajaxUrl, function(){
            var val = page.evaluate(function(){
                // 页面内执行js。注意,这个和phantomjs的变量是分离的,外部变量无法直接使用
                return $('a.lnk-reg')[0].href;
            });
            console.log('The register address: ' + val);
            phantom.exit();
        });
    };

});

执行结果如下:

$ phantomjs hello.js

The default user agent is Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)

The register address: http://www.douban.com/accounts/register

为什么不用百度做演示呢?你自己试试就知道了:)

在Chrome的console中执行是没有问题的,但是在phantomjs中执行就会出现问题。不知道是否是UA干扰的,或者是phantomjs并非是完整的Webkit浏览器。