用Java 怎样实现一个获取js加载完全之后的html文件呢?

JasonO 发布于 2016/04/21 18:01
阅读 1K+
收藏 0
我已用过httpclient htmlparser 获取到的都是未加载的,用htmlunit会报错,一个是直接打印Your browser does not support the canvas element.另外一个是报错EcmaError: lineNumber=[7986] column=[0] lineSource=[null] name=[TypeError] sourceName=[http://yx8.com/game/paopaolixianji/game.js] message=[TypeError: Cannot read property "width" from undefined (http://yx8.com/game/paopaolixianji/game.js#7986)]....后面还有一大串类似这种。 我的本意是想抓取一些单机版的网页游戏手动另存为这种方式感觉太繁琐太慢了。 请问大神们有什么好的解决方案吗?
加载中
1
张亦俊
张亦俊

我都是直接用Runtime.exec方法执行外部一个phantomjs(http://www.oschina.net/p/phantomjs)的js脚本来把网页内容输出到stdout,再从java里读。js脚本如下:


var webpage = require('webpage');
var system = require('system');

var page = webpage.create();
page.open(system.args[1], function (status) {
    if (status === 'success') {
        var content = page.evaluate(function () {
            return document.documentElement.outerHTML;
        });
        system.stdout.write(content);
    }
    phantom.exit();
});




张亦俊
张亦俊
回复 @JasonO : 你可以试试在那个if里试试延迟几秒,或者随便模拟点事件之类的
JasonO
JasonO
我刚试了一下,还是不行呢。不能获取js动态添加html属性之后的html~呜呜
JasonO
JasonO
谢谢,请问我爬那些html5的游戏也可以吗?
0
气质舞王尼古拉斯赵四
气质舞王尼古拉斯赵四
这个有现成的工具的吧
JasonO
JasonO
请问有没有好的工具介绍一下呢
0
红薯
红薯

这个很难吧,需要模拟网页的执行

返回顶部
顶部