在 nodejs 中使用 cheerio 加载特定 HTML?

Load specific HTML by using cheerio in nodejs?

我需要从给定网页获取所有 <a> 标签 url。而且我还需要避免 header 和页脚标签之间的 <a> 标签。我正在加载 body 标签 html 但没有 header 标签。这是我的代码,但它不起作用。

var $ = cheerio.load(html);
$ = cheerio.load($('body').not('header'));

var links = $("a']");
links.each(function() {
    console.log($(this).attr('href'));
});

如果上面的代码是错误的,请建议如何去做?

我认为错误是因为您没有在第二次加载时加载 HTML。您正在加载 body 对象。你应该可以这样做:

var $ = cheerio.load(html);
$ = cheerio.load($('body').html());

$('header').remove();

console.log($.html());

Cheerio 的工作方式与 jQuery 相同。

var $ = cheerio.load(html);
var links = $('body').not('header').find('a');
// $('body:not(header) a') may also work.

links.each(function() {
    console.log(this.href);
});

我确实喜欢这个,现在它工作正常...谁能告诉我这是正确的方法吗?...

var $ = cheerio.load(body);
var t = $('body');
t.children('header').remove();
t.children('footer').remove();
var t = $.html(t);
var $ = cheerio.load(t);
var links = $("a");
links.each(function() {
    console.log($(this).attr('href'));
});

谢谢,