我正在尝试使用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获取jQuery元素的文本。
答案 0 :(得分:0)
node.js / cheerio代码应该放在服务器端运行的单独文件中。
//cheerio-test.js
const request = require('request');
const $ = require('cheerio');
request('https://www.lemonde.fr/', (error, response, html) => {
if (error) return console.error(error);
console.log( $('body').html() ); //or console.log( $('body').text() );
});
您需要在服务器上使用npm安装正确的环境,包括npm
,nodejs
,package.json
和request
和cheerio
。然后,在命令行上运行:
node cheerio-test
参考