使用HTMLAgilityPack创建HTMLDocument的正确方法?

时间:2015-01-30 18:02:55

标签: c# .net html-agility-pack

请考虑以下代码:

string url="http://badoo.com";
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "GET";
WebResponse myResponse = myRequest.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
myResponse.Close();

现在我在结果变量中有htmlstring,让我们尝试一下:

// save normally
File.WriteAllText("1.html",result);

// save using HTMLAgilityPack
HtmlAgilityPack.HtmlDocument hdoc = new HtmlAgilityPack.HtmlDocument();
hdoc.LoadHtml(result);
hdoc.Save("2.html");

有人可以告诉我为什么1.html和2.html看起来不一样吗?虽然它们的文件大小相同吗?

链接到正确的(file.writealltext()):http://woman2.com/1.html

链接到错误的链接(使用htmlagility pack保存):http://woman2.com/2.html

更新 我还尝试将文件保存在本地磁盘上,然后

hdoc.Load("path/to/local",true); 

我也尝试过:

hdoc.LoadHtml(result);

并尝试过:

hdoc.Save("2.html",Encoding.UTF8);

但任何尝试似乎都对我有用。我现在已经为此奋斗了3天。

1 个答案:

答案 0 :(得分:0)

安德鲁莫顿是对的。文件' 1.html'形成的方式使敏捷包愤怒/害怕/困惑。严肃地说,我运行了你的代码并对结果文件进行了分析,这里有一些区别:


无害:

  • 删除空白冗余
  • 添加以前自动关闭的结束标记

可能影响网站:

  • 添加以前不存在的属性值
  • 更改特定于语言的字符

可能影响网站:

  • "修正"无与伦比的报价(如果我不得不猜,我会把钱放在这里)

再次,正如安德鲁提到的那样,在将头撞到墙上之前先将其修好。