使用 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 弹出?
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