我会尝试尽可能具体,因为我是初学者,这是我在stackoverflow上的第一个问题:)!
我正在尝试使用cheerio和nodeJs在html页面中提取某些数据属性的值,这是我的代码:
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>
所以我遇到的问题是当我尝试在终端中运行我的代码时出现此错误:error
但是当我在控制台chrome中运行这个部分时:
var dataList = $(".mel").map(function() {
return $(this).data("mel");
}).get();
console.log(dataList.join("|"));
它有效!!! :(但我想在我的终端运行它,所以我可以迭代!
所以我设法使用以下代码在终端中使用它:
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:!
谢谢:-)
答案 0 :(得分:1)
尝试将代码切换为:
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(', '));