2016-02-23 27 views
-1

我需要從給定的網頁獲取所有<a>標記網址。而且我還需要避免頁眉和頁腳標記之間的標記爲<a>。我正在加載body標籤html,但沒有標題標籤。這是我的代碼,但它不起作用。在nodejs中使用cheerio加載特定的HTML?

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

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

如果上面的代碼是錯誤的,請建議如何做到這一點?

回答

-1

我做了現在這個樣子了工作的罰款...任何一個可以告訴我,這是正確的方式做到這一點?...

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')); 
}); 

感謝,

0

我認爲這個錯誤是因爲你沒有在第二次加載時加載HTML。您正在加載正文對象。你應該可以這樣做:

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

$('header').remove(); 

console.log($.html()); 
+0

不工作的傢伙.. 。 – rajkuppus

+0

對不起。首先我在瀏覽器中進行測試。現在正在工作。 – tenor528

3

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); 
}); 
+0

這也不是刪除標題標記 – rajkuppus

+0

您不需要更改DOM以避免檢查標題。 –

+0

var $ = cheerio.load(body); var t = $('body'); t.children('header')。remove(); t.children('footer')。remove(); var t = $ .html(t); var $ = cheerio.load(t); 我做了這個工作正常 – rajkuppus