0

msdn からいくつかのコードにニックネームを付けたので、すぐに思いどおりに動作しないことに腹を立てています。私はグーグル翻訳を使用して、その場でいくつかのものを翻訳しようとしています。問題は、responseFromServer に翻訳されたテキストが含まれていないことです。また、ページ自体を見ると誇らしげに表示されますが、ブラウザを使用してソースを見るとソースも含まれていません。

void getTranslation()
    {
        WebRequest request = WebRequest.Create("http://translate.google.com/translate_t?hl=en#en|fr|dog");
        // Get the response.
        WebResponse response = request.GetResponse();
        // Display the status.
        Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        // Get the stream containing content returned by the server.
        Stream dataStream = response.GetResponseStream();
        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);
        // Read the content.
        string responseFromServer = reader.ReadToEnd();
        int index = 0;
        while (responseFromServer.Substring(index).Contains("dog"))
        {
            index = responseFromServer.IndexOf("dog", index + 1);
            Console.WriteLine(responseFromServer.Substring(index < 50 ? 0 : index - 50, 100));
            Console.WriteLine(" ");
        }
    }

ここで私が理解できていないことを誰かが知っていますか? それとも、リクエストと同じくらい簡単な翻訳を返すウェブサイトですか?

4

2 に答える 2

3

その理由は、翻訳リクエスト自体が非同期 AJAX リクエストであるためです。取得しようとしているページのソースを表示すると、単語が見つかりませんchien

Google AJAX Language APIを調べて、目的を達成することができます。

于 2009-04-24T08:46:07.397 に答える
2

このアプリケーションは JavaScript を使用して自動的に投稿するため、機能しません。

スクリーンスクレイピングを介してこれを行う場合は、正しいパラメーターを使用してフォームの URL に対して POST 要求を実行する必要があります。

ただし、ウェブスクレイピングではなく、 APIを使用することをお勧めします。

于 2009-04-24T08:49:10.803 に答える