带有NodeJS / Cheerio的JQuery的.text()

时间:2019-08-29 13:03:24

标签: jquery node.js cheerio

我正在尝试使用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元素的文本。

1 个答案:

答案 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安装正确的环境,包括npmnodejspackage.jsonrequestcheerio。然后,在命令行上运行:

node cheerio-test

参考

node.js

request

cheerio