NodeJS と Cheerio ライブラリを使用して Google 翻訳をスクレイピングしたいと思います。
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);
}
しかし、彼は翻訳ボックス (result_box) から必要なスパン要素を見つけることができません。Web サイトのソース コードでは、次のようになります。
<span id="result_box">
<span class="hps">hello</span>
<span class="hps">world</span>
</span>
したがって、Google がすべてのスパン要素を作成するまで 5 ~ 10 秒待つことができると思いますが、そうではないようです..
setTimeout(function() {
$ = cheerio.load(body);
console.log($('#result_box').find('span').length);
}, 15000);
私を手伝ってくれますか?:)
解決:
Cheerio の代わりに 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);
});
}));
したがって、翻訳された結果文字列が得られます。使用される URL は、サーバーへの要求です。