2017-06-20 1 views
0
js noeud

Je racler la page Web https://www.g2a.com/rising-storm-2-vietnam-steam-cd-key-global.htmlface à problème lors web grattant une table de page à l'aide

Je dois obtenir le titre à partir des données de table.

var express = require('express'); 
var fs = require('fs'); 
var request = require('request'); 
var cheerio = require('cheerio'); 
var app = express(); 

app.get('/scrape', function(req, res) { 

    url = 'https://www.g2a.com/rising-storm-2-vietnam-steam-cd-key-global.html'; 

    request(url, function(error, response, body) { 
     if (!error) { 
      var $ = cheerio.load(body); 
      var arr = []; 
      var title = $('.mp-user-rating tr td').each(function(element) { 
       var tableData = $(element).find('.mp-rating-popup'); 
       arr.push({ 'title': tableData.text() }); 
      }); 
      console.log(arr); 
     } 
     res.send(arr); 

    }); 
}) 
app.listen('8081'); 

console.log('Magic happens on port 8081'); 

exports = module.exports = app; 

Ici arr est toujours vide.

enter image description here

L'image montre la structure de la table

Toute aide serait appréciée.

Répondre

0

cheerio n'exécute pas javascript mais simplement analyse le code HTML. si vous avez besoin de javascript pour exécuter (par exemple, lorsque le contenu est chargé via ajax ou lorsque l'application est une application monoposte créée par le client), vous devez utiliser phantomjs ou hacher une solution avec electron ou utiliser le nouveau headless chrome with an abstraction. Une alternative serait d'utiliser jsdom. Jsdom est génial si vous avez le contrôle de la page que vous voulez explorer (ou son rendu côté serveur), mais sachez que les erreurs de site provoqueront le crash de votre processus de nœud.