phantomjs的文档还比较简单,最近使用发现的一些问题:
无法设定载入网页的超时
解决:单独写程序来监控这些phantomjs进程,超时kill
基于这个https://github.com/lgxz/lprm 修改而来。
无法跟踪某些网页跳转
如这种html的meta跳转,phantomjs无法跟踪
wangxh@mac : ~/x$ curl -vv http://www.javaworld.com.tw/
* About to connect() to www.javaworld.com.tw port 80 (#0)
* Trying 61.63.52.65...
* connected
* Connected to www.javaworld.com.tw (61.63.52.65) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
> Host: www.javaworld.com.tw
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
< ETag: W/"78-1197971228000"
< Last-Modified: Tue, 18 Dec 2007 09:47:08 GMT
< Content-Type: text/html
< Content-Length: 78
< Date: Mon, 29 Oct 2012 09:30:42 GMT
<
<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.javaworld.com.tw/jute">
load事件被多次触发
截图出现黑色背景
一般出现在网页没有设置背景色的情况下,这是背景色应该是透明,而输出jpg图像是,没办法表示透明,于是被转成了黑色,所以当网页没有背景色的时候,给它设置个背景色即可。
page.evaluate(function () {
if(!document.body.style.backgroundColor){
document.body.style.backgroundColor = 'white';
}
});
事件触发
资源
https://groups.google.com/forum/?fromgroups=#!topic/phantomjs/_Oj_ZksE4R0