代码工作在控制台,但不是在terminal

我会尽可能具体,因为我是一个初学者,这是我的第一个问题在这里在stackoverflow :)!

我试图提取HTML页面中的一些数据属性的值,使用cheerio和nodeJs,这里是我的代码:

var request = require('request'); var cheerio = require('cheerio'); var url = 'http://www.example.com/example'; request(url, function(err, resp, body){ var dataList = $(".example").map(function() { return $(this).data("example"); }).get(); console.log(dataList.join("|")); }); 

这里是我正在工作的HTML:

 <span class="item-link"><span class="example" data-mel="example"> <img src="/#" alt="" /> </span></span> 

所以我遇到的问题是,当我尝试在我的terminal中运行我的代码,我得到这个错误: 错误

但是当我在控制台chrome中运行这个部分时:

  var dataList = $(".mel").map(function() { return $(this).data("mel"); }).get(); console.log(dataList.join("|")); 

有用 !!! :(但我想运行在我的terminal,所以我可以迭代!

所以我设法使这个代码在我的terminal工作:

 var request = require("request"), cheerio = require("cheerio"), url = "http://www.example.com/example"; var mail2 = []; request(url, function (error, response, body) { if (!error) { var $ = cheerio.load(body); $('.item-link').each(function(i, elem){ mail2[i] = $(".example").data("example"); }); console.log(mail2.join(', ')); 

但是,我一次又一次得到相同的元素,它不会提取整个页面。

对不起,这个大混乱,让我知道,如果我可以更具体的! 请原谅我的英文C:!

谢谢 :-)

尝试将您的代码切换到:

 var request = require("request"), cheerio = require("cheerio"), url = "http://www.example.com/example"; var mail2 = []; request(url, function (error, response, body) { if (!error) { var $ = cheerio.load(body); $('.item-link').each(function(i, elem){ mail2[i] = $(elem).find(".example").data("example"); }); } }); console.log(mail2.join(', '));