gpt4 book ai didi

javascript - 在执行页面的 javascript 后保存页面的 html 输出

转载 作者:IT王子 更新时间:2023-10-29 03:01:15 25 4
gpt4 key购买 nike

我正在尝试抓取一个网站,它首先加载一个 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();
});

此代码将用于客户端,我不能指望他安装太多包(nodejs、casperjs 等)

谢谢

最佳答案

您的输出代码是正确的,但存在同步性问题。您拥有的输出行在页面加载完成之前正在执行。您可以绑定(bind)到 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() {
});
});

当使用像 google 这样的网站时,它可能具有欺骗性,因为它加载速度如此之快,以至于您通常可以像拥有它一样内联执行屏幕抓取。计时在 phantomjs 中是一件棘手的事情,有时我会使用 setTimeout 进行测试以查看计时是否是一个问题。

关于javascript - 在执行页面的 javascript 后保存页面的 html 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16856036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com