代码之家  ›  专栏  ›  技术社区  ›  Patrick

使用WebRequest检索数据

  •  0
  • Patrick  · 技术社区  · 16 年前

    从msdn上截取了一些代码后,我很恼火,因为它不能直接按照我想要的方式工作。我想用谷歌翻译,好吧,为我翻译一些东西。问题是,t5responseFromServer不包含翻译的文本,也不包含源代码,当我使用浏览器查看它时,尽管当查看页面本身时,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 回复  |  直到 16 年前
        1
  •  3
  •   Ronald Wildenberg    16 年前

    原因是转换请求本身是一个异步Ajax请求。如果查看要检索的页面的源,将找不到该单词 chien .

    你可以看看 Google AJAX Language API 实现你想要的。

        2
  •  2
  •   Kirschstein    16 年前

    它不起作用,因为这个应用程序使用JavaScript自动发布。

    如果您想通过屏幕抓取来完成这项工作,您必须使用正确的参数对表单的URL进行一个发布请求。

    不过,您最好只使用它们 API 而不是网络抓取。