【发布时间】:2016-09-07 01:05:50
【问题描述】:
我最近开始使用 NodeJS 和 Cheerio。 我正在获取一个外部 URL,并使用 Cheerio 加载 html。
我偶然发现了一个问题,每当我尝试获取元素的 css 属性时,$.css([property]) 总是返回 null,无论我给它什么选择器或属性。
我在做什么:
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
app = express();
app.get('/something_something', function (req, res) {
request('some_url', function (error, response, html) {
var $ = cheerio.load(html)
//
console.log($('body').css('width'));
}
}
这将始终记录 null,无论它具有什么选择器或 css 属性。 (请记住我已经过度检查了 jQuery 对象 $('body') 是否存在,无论 URL 是什么都会发生这种情况)
另外,如果我设置$('body').css('width', '100px')
然后console.log($('body').css('width')),它将显示100px。所以我猜这不是 css() 方法本身,而是 Cheerio 获取/不获取元素样式的方式
*其他 Cheerio 方法有效,例如 text()、val()、remove()。
我仍然是 NodeJS/Cheerio 新手,所以任何帮助、解释、建议或信息都是宝贵的,
欢呼!
【问题讨论】:
-
你的'body'有宽度样式吗?如果您想获取
body标签的实际宽度,请使用 $('body').width() api.jquery.com/width -
从我在 Cheerio 文档中可以看到,它不支持 width() 方法。此外,css() 始终返回 null,无论属性是“font-size”、“color”还是任何其他 css 属性
标签: javascript node.js web-scraping cheerio