【发布时间】:2016-11-30 11:22:21
【问题描述】:
我正在尝试使用 PhantomJS 获取给定网页中所有图像 src url 的列表。我的理解是这应该非常容易,但无论出于何种原因,我似乎都无法让它发挥作用。这是我目前拥有的代码:
var page = require('webpage').create();
page.open('http://www.walmart.com');
page.onLoadFinished = function(){
var images = page.evaluate(function(){
return document.getElementsByTagName("img");
});
for(thing in a){
console.log(thing.src);
}
phantom.exit();
}
我也试过这个:
var a = page.evaluate(function(){
returnStuff = new Array;
for(stuff in document.images){
returnStuff.push(stuff);
}
return returnStuff;
});
还有这个:
var page = require('webpage').create();
page.open('http://www.walmart.com', function(status){
var images = page.evaluate(function() {
return document.images;
});
for(image in images){
console.log(image.src);
}
phantom.exit();
});
我还尝试在评估函数中迭代图像并以这种方式获取 .src 属性。
他们都没有返回任何有意义的东西。如果我返回 document.images 的长度,页面上有 54 张图像,但尝试遍历它们并没有什么用处。
另外,我查看了以下其他问题,但无法使用他们提供的信息:How to scrape javascript injected image src and alt with phantom.js 和 How to download images from a site with phantomjs
再次,我只想要源网址。我不需要实际的文件本身。感谢您的帮助。
更新
我尝试使用
var a = page.evaluate(function(){
returnStuff = new Array;
for(stuff in document.images){
returnStuff.push(stuff.getAttribute('src'));
}
return returnStuff;
});
它抛出一个错误,说 stuff.getAttribute('src') 返回未定义。知道为什么会这样吗?
【问题讨论】:
-
console.log([].map.call(document.images, a=>a.src))
标签: javascript web-scraping phantomjs