4

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 は、サーバーへの要求です。

4

2 に答える 2