从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(" ");
}
}
有谁知道我在这里没有理解的东西?或者返回简单请求的网站?
答案 0 :(得分:3)
原因是翻译请求本身是异步AJAX请求。如果您查看要检索的网页来源,则找不到单词chien
。
您可以查看Google AJAX Language API以达到您想要的效果。
答案 1 :(得分:2)
它不起作用,因为此应用程序使用javascript自动发布。
如果您想通过screenscraping执行此操作,则必须使用正确的参数对表单的URL执行POST请求。
但是,建议您使用API而非网页抓取更为明智。