gya*_*guy 49 javascript headless-browser phantomjs
有一个我试图抓取的网站,首先加载一个html/js使用js然后POST修改表单输入字段.如何获取POSTed页面的最终html输出?
我尝试用phantomjs做这个,但它似乎只有渲染图像文件的选项.谷歌搜索表明它应该是可能的,但我无法弄清楚如何.我的尝试:
var page = require('webpage').create();
var fs = require('fs');
page.open('https://www.somesite.com/page.aspx', function () {
page.evaluate(function(){
});
page.render('export.png');
fs.write('1.html', page.content, 'w');
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)
这段代码将用于客户端,我不能指望他安装太多的包(nodejs,casperjs等)
谢谢
小智 26
您拥有的输出代码是正确的,但同步性存在问题.在页面加载完成之前,您正在执行输出行.你可以绑定onLoadFinished回调来找出发生的时间.请参阅下面的完整代码
var page = new WebPage()
var fs = require('fs');
page.onLoadFinished = function() {
console.log("page load finished");
page.render('export.png');
fs.write('1.html', page.content, 'w');
phantom.exit();
};
page.open("http://www.google.com", function() {
page.evaluate(function() {
});
});
Run Code Online (Sandbox Code Playgroud)
当使用像谷歌这样的网站时,它可能是欺骗性的,因为它加载得如此之快,以至于你可以像往常一样执行屏幕内嵌.时间在phantomjs中是一件棘手的事情,有时我会用setTimeout测试时间是否有问题.
小智 4
当我直接复制你的代码并将URL更改为www.google.com时,它工作正常,保存了两个文件:
请记住,这些文件将写入您运行脚本的位置,而不是您的 .js 文件所在的位置
归档时间: |
|
查看次数: |
50746 次 |
最近记录: |