gpt4 book ai didi

javascript - 抓取动态网站(PhantomJS)时出现问题

转载 作者:行者123 更新时间:2023-11-28 03:37:17 24 4
gpt4 key购买 nike

我正在尝试找到一种方法来 wget/下载 website .

我尝试过 wgetcurl 但没有成功,然后我被引导到 PhantomJS

var url = 'https://www.sagedining.com/menus/admiralfarragutacademy';
var fs = require('fs');
var page = require('webpage').create();
page.open(url, function(status) {
if (status === 'success') {
var html = page.evaluate(function() {
return document.documentElement.outerHTML;
});
try {
fs.write("/root/choate/page.html", html, 'w');
} catch(e) {
console.log(e);
}
}
phantom.exit();
});

当我在 Debian VPS 上运行此代码时,

sudo xvfb-run -- phantomjs menu.js

它会在网站仍在加载时下载该网站,因此仅下载加载屏幕。每次运行时它也会抛出此错误:

TypeError: Attempting to change the setter of an unconfigurable property.

TypeError: Attempting to change the setter of an unconfigurable property.

加载完所有菜单后,有什么方法可以下载该网站吗?错误信息与此有什么关系吗?

提前谢谢您。

最佳答案

该错误来自 PhantomJS,因为页面代码正在尝试在 DOM 中设置某些属性,但可能无法访问它们。您应该等待加载发生,您可以使用超时函数来完成:

   if (status === 'success') {
window.setTimeout(function () {
var html = page.evaluate(function() {
return document.documentElement.outerHTML;
});
try {
fs.write("/root/choate/page.html", html, 'w');
} catch(e) {
console.log(e);
}
}, 1000); //Increase the value if you need more time
}

关于javascript - 抓取动态网站(PhantomJS)时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57593054/

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