【问题标题】:Download a webpage with PhantomJS使用 PhantomJS 下载网页
【发布时间】:2015-05-05 23:21:35
【问题描述】:

我正在尝试使用 PhantomJS 下载网页,代码如下所示,其中“地址”是网址,“目录”是我下载网页代码的文件路径。

var system = require('system');
var page = require('webpage').create();
var fs = require('fs');

// Set the url address
address = system.args[1];

// Set the file path
var dir = system.args[2];

page.open(address, function () {
    fs.write(dir, page.content, 'w');
    phantom.exit();
});

这在许多网页中都能正常工作,但在这种情况下(“http://www.lefties.com/es/es/woman/zapatos-c1029521.html”)我看不到产品的 href,因为当我使用 phantomJS 下载或不使用它时,下载的是全屏弹出窗口cookie 订阅。这样就无法在下载的 html 中找到产品 href。

另外,PhantomJS 在我下载的时候显示这个错误:

TypeError: 'null' 不是对象(评估 '$('PopupFullscreen').getElementById('Close').setStyles')

有什么办法可以避免订阅/cookie 弹出窗口吗?

【问题讨论】:

    标签: javascript html cookies popup phantomjs


    【解决方案1】:

    好吧,在脚本中使用 cookie(存储在我的浏览器中)可以解决问题。更多信息请查看:http://phantomjs.org/api/webpage/method/add-cookie.html

    【讨论】:

      【解决方案2】:

      像这样的 Cookie 模式对话框现在很常见。您几乎总是可以关闭这些对话框。 Click关闭按钮关闭它。

      仅仅因为有这个模型对话框,并不意味着你不能访问它背后的 DOM。标记仍然存在(除了可能由于 TypeError 而丢失的标记)。

      出现该错误消息是因为页面 JavaScript 使用了 PhantomJS 1.x 中未实现的某些功能。如果你使用 PhantomJS 2,它就会消失。

      【讨论】:

        猜你喜欢
        • 2017-02-21
        • 1970-01-01
        • 2014-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多