Estoy tratando de raspar una página web del mercado de valores para los títulos de los enlaces href. No obtengo ninguna salida. Intenté llamar a la clase, id, etc. Veo que la etiqueta tiene $0 asignado. Escribí esto en la línea de comando de la consola pero solo mostró lo mismo.
Estoy tratando de obtener el texto "Ofertas a granel" del html. Si puedo entender cómo se hace eso, puedo proceder.
Código:
var cheerio = require('cheerio'); var request = require('request'); var url ="http://feeds.feedburner.com/nseindia/CMDailyReport"; request(url, function(err, resp, body){ var $ = cheerio.load(body); $(".regularitem .itemtitle").each(function(){ var link = $(this); var text = link.text(); var href = link.attr("href"); console.log(text + href); }); }); <ul> <li xmlns:dc="http://purl.org/dc/elements/1.1/" class="regularitem"> <h4 class="itemtitle"> <a href="http://feedproxy.google.com/~r/nseindia/CMDailyReport/~3/P9Aw3__Tm9M/bulk.csv">Bulk Deals</a></h4> <h5 class="itemposttime"></h5> <div class="itemcontent" name="decodeable"><div class="feedflare"> <a href="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?a=P9Aw3__Tm9M:Clpwmq7B-_I:yIl2AUoC8zA"> <img src="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?d=yIl2AUoC8zA" border="0"> </a> <a href="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?a=P9Aw3__Tm9M:Clpwmq7B-_I:F7zBnMyn0Lo"> <img src="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?i=P9Aw3__Tm9M:Clpwmq7B-_I:F7zBnMyn0Lo" border="0"> </a> <a href="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?a=P9Aw3__Tm9M:Clpwmq7B-_I:qj6IDK7rITs"> <img src="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?d=qj6IDK7rITs" border="0"> </a> <a href="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?a=P9Aw3__Tm9M:Clpwmq7B-_I:gIN9vFwOqvQ"> <img src="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?i=P9Aw3__Tm9M:Clpwmq7B-_I:gIN9vFwOqvQ" border="0"> </a> </div> <img src="http://feeds.feedburner.com/~r/nseindia/CMDailyReport/~4/P9Aw3__Tm9M" height="1" width="1" alt=""> </div> </li>Cuando haces $(".regularitem .itemtitle") , obtienes el <h4> y no el enlace ( <a> ) que está dentro.
Para obtener las "Ofertas masivas", puede hacer lo siguiente en su navegador (o hacer clic en el botón "Ejecutar fragmento de código"):
var html = `<li xmlns:dc="http://purl.org/dc/elements/1.1/" class="regularitem"> <h4 class="itemtitle"> <a href="http://feedproxy.google.com/~r/nseindia/CMDailyReport/~3/P9Aw3__Tm9M/bulk.csv">Bulk Deals</a></h4> <h5 class="itemposttime"></h5> <div class="itemcontent" name="decodeable"><div class="feedflare"> <a href="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?a=P9Aw3__Tm9M:Clpwmq7B-_I:yIl2AUoC8zA"> <img src="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?d=yIl2AUoC8zA" border="0"> </a> <a href="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?a=P9Aw3__Tm9M:Clpwmq7B-_I:F7zBnMyn0Lo"> <img src="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?i=P9Aw3__Tm9M:Clpwmq7B-_I:F7zBnMyn0Lo" border="0"> </a> <a href="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?a=P9Aw3__Tm9M:Clpwmq7B-_I:qj6IDK7rITs"> <img src="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?d=qj6IDK7rITs" border="0"> </a> <a href="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?a=P9Aw3__Tm9M:Clpwmq7B-_I:gIN9vFwOqvQ"> <img src="http://feeds.feedburner.com/~ff/nseindia/CMDailyReport?i=P9Aw3__Tm9M:Clpwmq7B-_I:gIN9vFwOqvQ" border="0"> </a> </div> <img src="http://feeds.feedburner.com/~r/nseindia/CMDailyReport/~4/P9Aw3__Tm9M" height="1" width="1" alt=""> </div> </li>` var parser = new DOMParser(); var doc = parser.parseFromString(html, "text/html"); Array.from(doc.querySelectorAll(".regularitem .itemtitle")).forEach(function(h4) { var link = h4.getElementsByTagName('a')[0]; console.log(link.innerHTML); });Espero eso ayude,
Saludos