2009-04-24 12 views
0

msdnからいくつかのコードをニックネーしたところ、私はまっすぐにしたいのとまったく同じようには動作しません。私は翻訳するためにgoogleを使用しようとしています。問題は、responseFromServerに翻訳されたテキストが含まれていないことと、ブラウザを使用して見たときにソースがないことです。ただし、chienが誇らしげに表示されています。WebRequestを使用してデータを取得する

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(" "); 
     } 
    } 

私がここで理解していないことは誰でも知っていますか?または、要求と同じくらい単純な翻訳を返すウェブサイトですか?

答えて

3

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

あなたが望むことを達成するためにGoogle AJAX Language APIを見ることができます。

+0

@パトリック:あなたの要件を満たすように管理しましたか、最後に別のアプローチを選択しましたか? –

+0

私はこれを学習の練習として使っていましたが、最後にはフォローする時間がありませんでした。フランスの同僚に手作業で必要なものを翻訳させるという選択肢がありました。 – Patrick

2

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

スクリーンキャプチャでこれを行う場合は、正しいパラメータでフォームのURLにPOSTリクエストを行う必要があります。

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

+0

公正であるようにJSも無効です – annakata

+0

JSをオフにしてURLに移動すると、手動でフォームを送信する必要があります。 私の悪いことに、私は私の説明にもっと明白にすべきでした – Kirschstein

関連する問題