C#WebClient只下载部分html

时间:2010-04-13 09:35:57

标签: c# webclient

我正在开发一些抓取应用程序,我想尝试让它运行但遇到了问题。我用googles网页替换了下面代码中的原始抓取目的地,仅用于测试。似乎我的下载并没有得到一切,我注意到身体和html标签缺少他们的关闭标签。如何让它下载所有内容?我的示例代码有什么问题:

string filename = "test.html";

WebClient client = new WebClient();            
string searchTerm = HttpUtility.UrlEncode(textBox2.Text);            
client.QueryString.Add("q", searchTerm);
client.QueryString.Add("hl", "en");
string data = client.DownloadString("http://www.google.com/search");

StreamWriter writer = new StreamWriter(filename, false, Encoding.Unicode);
writer.Write(data);
writer.Flush();
writer.Close();

3 个答案:

答案 0 :(得分:4)

Google的网页现在采用HTML 5格式,这意味着BODYHTML标记可以自动关闭 - 这就是Google省略它们的信息(信不信由你,它可以节省带宽。)

See this article

您可以在“HTML / SGML”模式下编写HTML5(允​​许省略XHTML之前的HTML之类的结束标记)或遵循XML规则的“XHTML”,要求关闭所有标记。

浏览器选择解析页面取决于您是为HTML / SGML语法发送Content-type text/html标头还是为XHTML语法发送application/xhtml+xml标头。 (来源:HTML5 syntax - HTML vs XHTML

答案 1 :(得分:0)

... Google的页面没有<body><html>的结束标记。谈谈疯狂的优化......

答案 2 :(得分:0)

http://www.google.com/search没有结束标记。