1.安装phantomjs

网上有很多。

2.执行官网上的示例代码

// Read the Phantom webpage '#intro' element text using jQuery and "includeJs"

"use strict";
var page = require('webpage').create(); page.onConsoleMessage = function(msg) {
console.log(msg);
}; page.open("http://phantomjs.org/", function(status) {
if (status === "success") {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
page.evaluate(function() {
console.log("$(\".explanation\").text() -> " + $(".explanation").text());
});
phantom.exit(0);
});
} else {
phantom.exit(1);
}
});

  

3.执行状态为一直卡在那里,不报错也不退出

为了查看程序的内部执行状态,加入运行日志

                page.onResourceRequested = function (req) {
console.log('requested: ' + JSON.stringify(req, undefined, 4));
}; page.onResourceReceived = function (res) {
console.log('received: ' + JSON.stringify(res, undefined, 4));
};

  

4.发现程序一直卡在一个js的请求

http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js

5.在自己的服务器上用python的SimpleHTTPServer 简单搭了一个http的server先翻墙把这个js下载下来,放到web上

6.修改代码把includeJS指向自己搭的http server上


备注:

调试过程发现phantomjs还有一个问题,就是page.open是异步执行的,如下代码:

var webPage = require('webpage');
var page = webPage.create(); page.open('http://www.baidu.com/', function(status) {
console.log('Status: ' + status);
// Do other things here...
}); phantom.exit(1)

你执行完后,打印返回值,echo $?,会得到1

而你把

phantom.exit(1)

注释之后,会得到status值。

最新文章

  1. Oracle的动态性能视图[持续更新]
  2. App 引导界面
  3. 微信小程序-发起请求
  4. 《C与指针》第八章练习
  5. GDB的使用
  6. IOS第二天多线程-05NSOperationQueue 暂停,和恢复队列任务
  7. ios实现截屏(转)
  8. 【C++学习之路】派生类的构造函数(三)
  9. ASP.NET 根据现有动态页面生成静态Html
  10. HTML4如何让一个DIV居中对齐?float输入日志标题
  11. JavaScript之面向对象学习七(动态原型模式、寄生构造函数模式、稳妥构造函数模式创建自定义类型)
  12. select空间提交form表单传递参数
  13. Android 开发,你遇上 Emoji 头疼吗?
  14. Core Java 谈谈 ThreadPoolExecutor
  15. Java基础学习(五)-- Java中常用的工具类、枚举、Java中的单例模式之详解
  16. 10、Libgdx的内存管理
  17. thinkphp5.1验证器场景验证中传参的方法。
  18. apicloud 自定义模块的开发与上架注意事项
  19. Android2.1消息应用(Messaging)
  20. 洛谷P3119 USACO15JAN 草鉴定

热门文章

  1. infopath发布的提示“无法解析SOAP消息”(The SOAP message cannot be parsed)问题解决方案
  2. iOS - 静态库的创建与使用
  3. 安开发卓之Notification(一)代码直接能用
  4. H5 表格标签的其它标签
  5. 解决adobe air sdk打包 apk后自动在包名前面加上air. (有个点)前缀的问题
  6. css选择器的使用详解
  7. 记录一次Quartz2D学习(四)
  8. Mybatis 查不到数据,总是返回Null
  9. Windows7 忘记密码的解决办法
  10. STM32C8T6 JTAG使用到PB3|PB4|PA13|PA14|PB15端口做普通IO时,需禁止JTAG!