Raschiare Google Translate

Vorrei raschiare Google Translate con NodeJS e la libreria cheerio:

request("http://translate.google.de/#de/en/hallo%20welt", function(err, resp, body) { if(err) throw err; $ = cheerio.load(body); console.log($('#result_box').find('span').length); } 

Ma non riesce a trovare gli elementi di span necessari dalla casella di traduzione (result_box). Nel codice sorgente del sito web è simile a questo:

  hello world  

Quindi penso che potrei aspettare 5-10 secondi fino a quando Google ha creato tutti gli elementi span, ma no .. sembra essere quello che non è ..

 setTimeout(function() { $ = cheerio.load(body); console.log($('#result_box').find('span').length); }, 15000); 

Potresti aiutarmi per favore? 🙂


Soluzione:

Invece di cheerio uso http.get:

 http.get( this.prepareURL("http://translate.google.de/translate_a/t?client=t&sl=de&tl=en&hl=de&ie=UTF-8&oe=UTF-8&oc=2&otf=1&ssel=5&tsel=5&pc=1&q=Hallo", function(result) { result.setEncoding('utf8'); result.on("data", function(chunk) { console.log(chunk); }); })); 

Quindi ottengo una stringa di risultati con la traduzione. L’url usato è la richiesta al server.

So che hai già risolto questo problema, ma penso che il motivo per cui il tuo codice non ha funzionato è dovuto al fatto che avresti dovuto scrivere […]. Find (“span.hps”). […]

O almeno per me ha funzionato sempre solo con l’identificatore di class, quando presente.