使用WebRequest检索数据

时间:2009-04-24 08:39:07

标签: .net ajax google-translate

从msdn中删除了一些代码,我觉得它不能完全按照我想要的方式工作。我正在尝试使用谷歌翻译,好吧,为我翻译一些东西。问题是,当我使用浏览器查看它时,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(" ");
        }
    }

有谁知道我在这里没有理解的东西?或者返回简单请求的网站?

2 个答案:

答案 0 :(得分:3)

原因是翻译请求本身是异步AJAX请求。如果您查看要检索的网页来源,则找不到单词chien

您可以查看Google AJAX Language API以达到您想要的效果。

答案 1 :(得分:2)

它不起作用,因为此应用程序使用javascript自动发布。

如果您想通过screenscraping执行此操作,则必须使用正确的参数对表单的URL执行POST请求。

但是,建议您使用API而非网页抓取更为明智。