2017-07-15 3 views
0

Ich versuche, auf die URL innerhalb der Li-Tags auf der Seite in meiner URL-Variable auf Null setzen. Es sollte einfach sein, aber ich kann es nicht zur Arbeit bringen. Ich bekomme die richtige Anzahl von Elementen, aber sie sind alle leer. text() liefert '' & html() gibt null zurück. Was mache ich hier falsch?NodeJS Cheerio Scraping li Tags gibt immer NULL zurück

const cheerio = require('cheerio'); 
const request = require('request'); 

function getHistory(){ 
    let url = 'http://coinmarketcap.com/historical/'; 
    request(url,(error,response,html)=>{ 
    var $ = cheerio.load(html); 
    $('li.text-center').each((i,element)=>{ 
     var omg = $(this).html(); 
     console.log(omg); 
    }); 
    }); 
} 

Antwort

1

Im Gegensatz zu dem tatsächlichen jQuery, Cheerio nicht gesetzt offenbar nicht den Wert von this. Wenn Sie dies ändern:

var omg = $(this).html(); 

dazu:

var omg = $(element).html(); 

werden Sie den HTML-Code sehen Sie erwartet hatten.


Wenn das, was Sie wirklich wollen, dass die href ist, dann sollten Sie den <a>-Tag mit Ihrem Wähler Ziel und erhalten das tatsächliche href Attribut von ihm. Du könntest das so tun:

function getHistory(){ 
    let url = 'http://coinmarketcap.com/historical/'; 
    request(url,(error,response,html)=>{ 
    let $ = cheerio.load(html); 
    $('li.text-center a').each((i,element)=>{ 
     let omg = $(element).attr('href'); 
     console.log(omg); 
    }); 
    }); 
} 
+0

Danke Freund, du hast mir Stunden der Frustration gerettet! – Raven

+0

OMG, so hilfreich! –

Verwandte Themen