2017-01-11 3 views
1

Ich bin ein webscraper machen und ich weiß schon, wie einige Daten verschrotten und wandeln sie in Json ich mit diesem Code gemacht:Screen Scraping & Web-Navigation Simulation

var express = require('express'); 
var fs = require('fs'); 
var request = require('request'); 
var cheerio = require('cheerio'); 
var app  = express(); 
var url = 'http://www.footmercato.net/'; 

request(url, function(err, resp, body) { 
    if (!err) { 
     var $ = cheerio.load(body); 
     var data = []; 
     var i = 1; 
     $('.text').each(function(i, element) { 
     var article = $('p'); 
     var jsObject = { title : "", article : "", date : "" }; 
     var articleTxt = article.text(); 
     jsObject.article = articleTxt; 
     data.push(jsObject); 
     }) 
     var json = JSON.stringify(data); 
     fs.writeFile('output.json', JSON.stringify(json, null, 4), function(err) { 
      console.log('File successfully written!'); 
     }) 
    } 
}); 

    app.listen('8080'); 

Aber ich möchte auf der Webseite navigieren Ich kratze, fülle Formulare aus und gehe zu anderen Seiten.

Weiß jemand, ob ich es mit cheerio machen kann oder wie ich es zu meinem bestehenden Code hinzufügen kann?

Dank

+0

Ich schlage vor, Sie haben einen Blick auf PhantomJS oder casperjs – superhero

+0

Ok danke Erik, ich werde auf sie einen Blick haben, aber ich freue mich auf eine Art und Weise phamtomJs oder casperJS zu assoziieren (welche ist die beste?) zu meinem cheerio code ... –

+0

was ist das beste? naja, casper ist eine extra schicht zwischen deiner anwendungslogik und phantom, es gibt kein "besser", du entscheidest, auf welchem ​​level du gerne code eingibst. ich habe nie casper benutzt, ich nehme an es ist benutzerfreundlicher. Wie benutzt man Cherio mit Phantom? ähnlich wie Sie in Ihrem Beispiel 'request' verwenden. Sie können untergeordnete Prozesse einrichten und die Ausgabe analysieren, aber es ist viel zu viel für mich, dies hier zu erklären. Ich habe Cherio und Phantom in einem Projekt verwendet, aber dann musste ich die Webseite nicht kontrollieren, da Sie erklären müssen, dass Sie Formulare ausfüllen und senden müssen. Diese Logik müssen Sie in Phantom lösen – superhero

Antwort

0

Sie webdriverio verwenden können, tatsächlich wird er ein Browser-Fenster öffnen, und dann können Sie den Dom durch die webdriverio api zu Formen Mausklicks zu behandeln, und navigieren Sie von einer Seite zu einer anderen manipulieren.

var webdriverio = require('webdriverio'); 
var options = { 
    desiredCapabilities: { 
     browserName: 'firefox' 
    } 
}; 
webdriverio 
    .remote(options) 
    .init() 
    .url('http://www.google.com') 
    .getTitle().then(function(title) { 
     console.log('Title was: ' + title); 
    }) 
    .end(); 
+1

Vielen Dank Alexandru, es sieht sehr kraftvoll und perforiert für das aus, was ich brauche. Ich werde es versuchen! –

Verwandte Themen