【发布时间】:2020-01-02 18:28:48
【问题描述】:
我正在尝试使用 NodeJS/Cheerio 编写 jQuery.fn.text。
我做到了:
function getText(elems) {
var ret = '', elem;
for (var i = 0; elems[i]; i++) {
elem = elems[i];
// Get the text from text nodes
if (elem.nodeType === 3) {
ret += elem.nodeValue;
} else if (elem.nodeType !== 8) {
// Traverse everything else, except comment nodes
ret += getText(elem.childNodes);
}
}
return ret;
}
request({
method: 'GET',
url: 'https://www.lemonde.fr/',
}, (error, response, html) => {
if (error) return console.error(error);
const $ = cheerio.load(html);
console.log(getText($('body')));
});
但我在console.log(getText($('body'))) 和console.log($('body').text()) 之间没有得到相同的结果。
getText 缺少一些文本。结果不完整。
说明: 我知道如何使用 jQuery.fn.text。我只是想知道如何使用 NodeJS/Cheerio 获取元素的文本 à la jQuery。
【问题讨论】:
-
您所需要的只是父元素的原生
textContent属性,可能需要进行一些修改以处理任何空格/换行符。如果这对您不起作用,您能否将 HTML 与您期望的输出一起添加到问题中 -
jQuery 在客户端运行,而 Node.js/Cheerio 在服务器端运行。
-
@RoryMcCrossan html 代码是 www.lemonde.fr 网站之一。预期的输出是
console.log($('body').text())的结果我无法联系到他,因为他太重要了。输出也是如此。