我正在使用以下脚本使用phantom.js抓取图像:
var page = require('webpage').create();
url = 'https://www.everlane.com/collections/mens-luxury-tees/products/mens-crew-antique'
page.open(url, function(status) {
if (status !== 'success') {
console.log('error');
phantom.exit();
return;
}
var a = page.evaluate(function() {
return document.getElementsByTagName('img');
});
SrcAlt = [];
for (var i=0; i<a.length; i++){
var src = a[i].getAttribute('src');
var alt = a[i].getAttribute('alt');
SrcAlt.push({"src": src, "alt": alt});
}
console.log(SrcAlt);
phantom.exit();
});
但是,在我定义变量a
之后,脚本会挂起,这意味着它不会迭代并返回src和alt属性。当我console.log(a)
它返回34时,所以我相信我有适当的图像资源。如何访问src和alt信息?谢谢!
答案 0 :(得分:0)
您需要在页面加载完成后评估您的页面。您可以使用page.onLoadFinished
回调执行此操作。在完成所有页面内容加载并且文档准备就绪后调用此回调。这样的事情应该有效:
var page = require('webpage').create();
var url = 'https://www.everlane.com/collections/mens-luxury-tees/products/mens-crew-antique';
page.open(url);
page.onLoadFinished = function()
{
var a = page.evaluate(function() {
return document.getElementsByTagName('img');
});
SrcAlt = [];
for (var i=0; i<a.length; i++){
var src = a[i].getAttribute('src');
var alt = a[i].getAttribute('alt');
SrcAlt.push({"src": src, "alt": alt});
}
console.log(SrcAlt);
phantom.exit();
}