0

从 msdn 中删除了一些代码后,我很生气,它不能立即按照我想要的方式工作。我正在尝试使用谷歌翻译,嗯,为我翻译一些东西。问题是 t5he responseFromServer 不包含翻译后的文本,当我使用浏览器查看它时,源也不包含,尽管在查看页面本身时 chien 自豪地显示。

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 回答