问题抓取动态网站(PhantomJS)

时间:2019-08-21 13:41:27

标签: javascript curl phantomjs 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:尝试更改不可配置属性的设置器。

     

TypeError:尝试更改不可配置属性的设置器。

加载所有菜单后,是否可以下载该网站?错误消息与它有关吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

该错误来自PhantomJS,因为页面代码试图在DOM中设置某些属性,也许它无法访问它们。您应该等待加载发生,您可以使用超时功能来做到这一点:

((AndroidDriver) driver).startActivity(new io.appium.java_client.android.Activity("com.android.settings",".Settings"));