简介:
phantomjs是一个基于webkit的无头(没有UI界面)浏览器。点击,翻页等人为操作需要开发人员进行程序实现。
相比较selenium,phantomjs对JavaScript的支持具有明显的优势。提供了javascript API接口,通过编写js程序可以直接与webkit内核交互。
具有多种平台的安装包,可以在不同的平台开发进行采集测试等工作。很多爬虫工程师使用phantomJS进行模拟登陆。
demo1:访问网页获取title
//webpage是phantomjs的核心模块之一,它提供给用户访问,操作,选择web文档的接口。
var page = require ('webpage').create();
//设置编码格式,否则输出可能会乱码
phantom.outputEncoding='gbk';
//第一个参数是你要访问的url,第二个参数是我们能偶检查返回状态的回调函数
//如果我们能成功访问,会打出对应的title信息
page.open("https://www.baidu.com/", function(status) { if ( status === "success" ) { console.log(page.title); } else { console.log("Page failed to load."); } //退出phantomjs的执行环境 phantom.exit(0); }); 运行结果如下 结果验证:
demo2:利用cookie登陆并截图
登陆之前的界面
进行人工登陆,获取cookie
var page=require('webpage').create(); //设置图片的大小 page.viewportSize={width:1200,height:800}; var flag = phantom.addCookie({ "domain":".baidu.com", "name":"BDUSS", "path":"/", "value":"mhCeEl1aFFoNTRWcjI1My1uSUd5NFB3SlZyNXFBV2huUmNmZURxfmxDVmtJMkJiQVFBQUFBJCQAAAAAAAAAAAEAAAA9IKbQ08bTxrzyvPK1pbWlb2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSWOFtkljhbN" }); console.log(flag); if(flag){ page.open('http://www.baidu.com', function (status) { if (status !== 'success') { console.log('Unable to load the address!'); phantom.exit(); } else { window.setTimeout(function () { page.render('./baiduLog.png'); phantom.exit(); }, 500); } }); }else{ console.log('error!'); }
登陆成功的截图如下:
验证成功