2017-06-20 3 views
0

Ich Abkratzen der Webseite https://www.g2a.com/rising-storm-2-vietnam-steam-cd-key-global.htmlProblem, wenn Web-Schaber tun

Ich brauche den Titel aus den Tabellendaten zu erhalten.

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').each(function() { 
       var tableData = $('.marketplace-name > .mp-rating-popup'); 
       arr.push({ 'title': tableData.text() }); 
      }); 
     } 
     res.send('Check your console!') 

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

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

exports = module.exports = app; 

Hier die Daten in der dritten Spalte und nicht in der Lage .mp-user-rating tr Daten zu bekommen, was zu erwarten ist.

Image

Das Bild zeigt die Struktur der Tabelle

Jede Hilfe würde geschätzt.

+0

Und was ist der Fehler? – mplungjan

+0

@mplungjan kein Fehler –

+0

Sie werden wahrscheinlich hier mehr Antworten erhalten: https://github.com/cheeriojs/cheerio/issues – mplungjan

Antwort

-1

Also ging ich auf die Seite und lief dies in der Konsole.

var arr = []; 
var title = jQuery('.mp-user-rating tr').each(function(i, element) { 
    var tableData = jQuery(element).find('.mp-rating-popup'); 
    arr.push({ 'title': tableData.text() }); 
}); 
console.log(arr); 

Das Array besteht aus 8 Objekten, die jeweils die Titel in sich tragen.

UPDATE:

zog ich in den HTML-Informationen für Ihren Code. Ich denke, das Problem ist, dass der HTML-Code asynchron von der Website geladen wird. Das Ziehen des HTML-Codes ruft daher nur das statische Markup ab. Sie müssen PhantomJS oder den Headless-Browser von Chrome verwenden, um die Website zu laden und die asynchronen Informationen laden zu lassen, dann können Sie den HTML-Code abrufen.

Sehen Sie hier für ein paar gute docs auf PhantomJS: https://github.com/Medium/phantomjs

+0

Vielen Dank für die Antwort, aber es funktioniert nicht, wenn ich durch Knoten bin js –

+0

Siehe meine aktualisierte Antwort. – matt

+0

Können Sie bitte ausarbeiten? –

Verwandte Themen