【发布时间】:2018-02-26 23:22:53
【问题描述】:
我目前正在尝试抓取网站的图像大小。我正在使用一个名为 scraperjs 的模块,它通常对我有帮助。现在我正在获取所有图像及其属性,但由于其中一些没有指定的高度/宽度,因此返回值是“未定义”。如果他们有一个高度/宽度属性,它就像一个魅力。即使没有在属性中说明它们的测量值,我如何才能获得它们的高度/宽度。 在此先感谢,这是我的代码。
var scraperjs = require('scraperjs');
url = process.argv.slice(2)[0];
if (!url) {
console.log('Usage: node ImgSizeGetter.js <url>');
return;
}
/*
Get all the Imagessizes in a page.
*/
scraperjs.StaticScraper
.create()
.onStatusCode(function (code) {
//console.log(code);
})
.scrape(function ($) {
/*return all img tags from entered url*/
return $('img').map(function () {
/*read the height and width attr of each img returned*/
var height = $(this).attr('height'),
width = $(this).attr('width'),
size = height + "x" + width;
console.log(size);
/*return size for further handling*/
return size;
}).get();
})
.then(function (images) {
/*do stuff*/
})
.get(url);
这是调用模块后我的节点命令提示符的粘贴:
node ImgSizeGetter.js https://reddit.com
70x70
52x70
70x70
62x70
36x70
70x70
52x70
69x70
70x70
69x70
70x70
59x70
69x70
52x70
70x70
52x70
39x70
52x70
67x70
39x70
70x70
52x70
68x70
39x70
undefinedxundefined
注意如果 undefinedxundefined 的最后一个尺寸,在查看 html 源代码后发现这是唯一没有设置高度/宽度属性的。
【问题讨论】:
-
如果
<img>没有“height”和“width”属性,则不会有值。您明确要求 jQuery 获取 attributes 的值,而不是直接查看 DOM 节点的 properties。将.attr()切换为.prop()。 -
可能是cheerio 而不是JQuery
-
@codtex 好吧,如果它真的是“核心 jQuery 的实现”,那也是一样。
-
我试过你的答案,实际上它似乎无法识别 .prop 函数。可能是因为它的欢呼声,就像@codtex 所说的那样。
-
.prop 遗憾地没有解决问题,我仍然得到 undefinedxundefined 作为返回值。
标签: javascript jquery html node.js image