博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
phantomjs应用(一)
阅读量:5957 次
发布时间:2019-06-19

本文共 2482 字,大约阅读时间需要 8 分钟。

关注phantomjs比较早,之前也做过一些学习总结,可是一直都没写博客,这里再记录下。为了让同事也开始学习了解下, 提供了一个demo,当然,这个demo也是根据一些资料整理而来。

这个demo很简单,就是访问百度,然后输入关键字,提交表单,然后获取部分结果

system = require('system')var page = require('webpage').create();phantom.outputEncoding = 'gb2312';page.settings = {    javascriptEnabled: true,    loadImages: true,    userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0'};todo:var t_key_word = '';if (system.args.length === 1) {    phantom.exit(1);} else {    t_key_word = system.args[1];    console.log("search keyword " + t_key_word + " from www.baidu.com");}console.log(t_key_word)testindex = 0, loadInProgress = false;page.onConsoleMessage = function (msg) {    console.log(msg);};page.onLoadStarted = function () {    loadInProgress = true;    console.log("load started");};page.onLoadFinished = function () {    loadInProgress = false;    console.log("load finished");};var steps = [    //open url    function () {        page.open("http://www.baidu.com");    },    //enter input    function () {        page.render("step1-1.png");        page.evaluate(function (key_word) {            console.log("*****************************");            var kw = document.getElementById('kw');            kw.value = key_word;            return;        }, t_key_word);        page.render("step1-2.png");    },    //submit    function () {        page.evaluate(function () {            var search_btn = document.getElementById('su');            search_btn.click();            return;        });        page.render("step2.png");    },    //get search result    function () {        var content_rst = page.evaluate(function () {            var rst = new Array();            var len = document.getElementsByTagName('h3').length;            for (i = 0; i < len; i++) {                rst[i] = document.getElementsByTagName('h3')[i].innerHTML;            }            return rst;        });        console.log(content_rst);    }];interval = setInterval(function () {    if (!loadInProgress && typeof steps[testindex] == "function") {        console.log("step " + (testindex + 1));        steps[testindex]();        testindex++;    }    if (typeof steps[testindex] != "function") {        console.log("test complete!");        phantom.exit();    }}, 2000);

另存为test.js

然后执行phantomjs test.js javascript
就会搜索javascript关键字

需要注意的地方是:

page.evaluate会启动一个sandbox来执行js, 所以里面的参数不能直接从外面获取,不过还好evaluate接受两个参数,第一个是必需的,表示需要在page上下文运行的函数 function;第二个是可选的,表示需要传给 function的参数 param,比如上面的key_world

转载地址:http://qnrxx.baihongyu.com/

你可能感兴趣的文章
转*SqlSever查询某个表的列名称、说明、备注、注释,类型等
查看>>
vivo面试经验4(linux基本操作,最基本,必须得会!!)
查看>>
thinkphp数据表操作恐怖事件。
查看>>
C#重绘TabControl控件的源码(转)
查看>>
Just a test
查看>>
nginx 的启动、停止与重启
查看>>
matlab练习程序(高斯金字塔)
查看>>
HTML表格
查看>>
串口类QextSerialPort
查看>>
Linux定时任务Crontab命令详解
查看>>
1)vmware station 14下安装linux系统
查看>>
python day11
查看>>
poj - 2503 Babelfish
查看>>
使用Windows 8 的“任务计划”令HydraVision更加精彩
查看>>
Javascript-逻辑运算符(&&)
查看>>
5、urllib.request.urlopen()
查看>>
py2与py3差别
查看>>
windows知识点
查看>>
第五章多态课后java_Java程序设计课后练习答案
查看>>
idea无用插件_没用过这些IDEA插件?怪不得写代码头疼
查看>>