开发者问题收集

使用 PhantomJS 下载网页

2015-05-05
1113

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

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' is not an object (evaluating '$('PopupFullscreen').getElementById('Close').setStyles')

有什么方法可以避免订阅/cookie 弹出?

enter image description here

2个回答

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

amarincolas
2015-05-05

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

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

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

Artjom B.
2015-05-05