Je suis l'analyse d'une simple page web en utilisant Cheerios et j'errait si possible est follwing:comment filtrer les objets cheerio dans `each` avec le sélecteur?
Avec un html de cette structure:
<tr class="human">
<td class="event"><a>event1</a></td>
<td class="name">name1</td>
<td class="surname"><a>surname1</a></td>
<td class="date">2011</td>
</tr>
<tr class="human">
<td class="event"><a>event2</a></td>
<td class="name">name2</td>
<td class="surname"><a>surname2</a></td>
<td class="date">2012</td>
</tr>
<tr class="human">
<td class="event"><a>event3</a></td>
<td class="name">name3</td>
<td class="surname"><a>surname3</a></td>
<td class="date">2013</td>
</tr>
Une fois que je reçois tous les objets Cheerio qui correspondent au sélecteur tr.human
Je veux être en mesure de faire une boucle à travers eux pour mapper des valeurs dans les classes name
, surname
etc à un objet.
Jusqu'à présent, j'atteint ceci:
var cheerio = require('cheerio');
var fs = require('fs')
fs.readFile('./humans.html', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
const $ = cheerio.load(data)
var results = $('tr.human')
results.each(function(i, result){
var date = result.children[3]
var name = result.children[1]
var surname = result.children[2]
var object = {"name":name,"date":date,"surname":surname}
})
});
Mais je veux me débarrasser d'appeler à l'index dans children
, au lieu que je voudrais filtrer result
par un sélecteur, quelque chose comme ceci:
var date = result.children('td.date')
mais au-dessus des résultats en erreur suivant:
var date = result.children('td.date')
^
TypeError: result.children is not a function
Je suis n ew à noeud et cheerio, lisez les docs Cheerio, mais je suis assez coincé avec celui-ci. Comment pourrais-je obtenir les valeurs dans certaines classes avec l'utilisation de sélecteurs? Je dois admettre que je veux première boucle et à l'intérieur de chaque carte d'itération à l'objet, ne pas faire correspondre les sélecteurs, puis boucle comme probablement cela ne garantit pas l'ordre correct des éléments dans les résultats appariés (boucle et filtre est pas commutatif ici), ou c'est le cas?
avec cette approche, je reçois résultat très bizarre, et 'date' devient objet plutôt générique sans attributs tous les autres (' name', 'surname') avoir. Mais je vais en lire plus sur l'emballage/déballage dans jQuery, +1, merci :) –