jQuery pour accéder à DOM sur un site

J’essaie de gratter divers éléments d’un tableau de ce site pour m’apprendre à gratter à l’aide de node.js, cheerio et request

J’ai du mal à trouver les éléments dans le tableau, je veux essentiellement obtenir le «rang», la «société» et la «croissance sur trois ans» du tableau. Comment puis-je faire cela?

Sur la base d’un tutoriel en ligne, j’ai développé mon script scraping.js pour ressembler à ceci:

var request = require ('request'), cheerio = require ('cheerio'); request('http://www.inc.com/inc5000/index.html', function (error, response, html) { if (!error && response.statusCode == 200) { var $ = cheerio.load(html); $('tr.ng-scope').each(function(i, element){ //problem probably lies here var a = $(this).get(0); console.log(a); }); } }); 

Cependant, je suis sûr que je ne comprends pas bien la ligne avec le commentaire ci-dessus. Existe-t-il un moyen de mieux accéder aux atsortingbuts de la table?

Je remarque les Xpaths en tant que tels

// * [@ id = “col-r”] / table / tbody / tr 2 / td 1 – rang

// * [@ id = “col-r”] / table / tbody / tr 2 / td 2 / a – nom de la société

// * [@ id = “col-r”] / table / tbody / tr 2 / td [3] – Taux de croissance sur 3 ans

J’essaie juste de comprendre comment accéder à ces atsortingbuts en conséquence.

    Vous êtes sur la bonne voie.

    La méthode $().get() renvoie l’élément. Dans votre cas, var a est le TR . Ce n’est pas forcément ce que tu veux.

    Ce que vous devez faire est de subdiviser chaque rangée en différents TD . J’ai fait cela en utilisant $(this).find('td') . Ensuite, je saisis chaque TD 1 par 1 et en extrait le texte, le convertissant en object où la clé représente le champ de la table. Tous ces éléments sont regroupés dans un tableau, mais vous pouvez utiliser le concept de base pour créer la structure de données que vous souhaitez utiliser.

      request('http://www.inc.com/inc5000/index.html', function (error, response, html) { if(error || response.statusCode != 200) return; var $ = cheerio.load(html); var DATA = []; $('tr.ng-scope').each(function(){ var $tds = $(this).find('td'); DATA.push({ rank: $tds.eq(0).text(), company: $tds.eq(1).text(), growth: $tds.eq(2).text(), revenue: $tds.eq(3).text(), industry: $tds.eq(4).text() }); }); console.log(DATA); });