我最近开始使用 NodeJS 和 Cheerio 。 我正在获取外部网址,并使用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的新手,所以任何帮助,解释,建议或信息都会是金色的,
Cheerio!
答案 0 :(得分:1)
Cheerio是一个DOM界面。它解析HTML并允许您访问节点及其属性。它不是虚拟浏览器,试图模拟实际浏览器的HTML视图。由于它不会对渲染进行任何渲染或模拟,因此无法告诉您只有在涉及渲染问题时才能确定的事物(如DOM元素的尺寸)。