我正在开发一些抓取应用程序,我想尝试让它运行但遇到了问题。我用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();
答案 0 :(得分:4)
Google的网页现在采用HTML 5格式,这意味着BODY
和HTML
标记可以自动关闭 - 这就是Google省略它们的信息(信不信由你,它可以节省带宽。)
您可以在“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
没有结束标记。