C# 阻止Html Agility Pack更改源代码

C# 阻止Html Agility Pack更改源代码,c#,html,html-agility-pack,C#,Html,Html Agility Pack,我不想更改一堆HTML文件中的特定文本,而将其余的代码原封不动地保存下来。我想我会使用Html敏捷包。所以我写了这样的代码: string Url = @"http://www.example.com"; HtmlWeb web = new HtmlWeb(); web.UserAgent = @"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) C

我不想更改一堆HTML文件中的特定文本,而将其余的代码原封不动地保存下来。我想我会使用Html敏捷包。所以我写了这样的代码:

        string Url = @"http://www.example.com";
        HtmlWeb web = new HtmlWeb();
        web.UserAgent = @"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36";
        HtmlDocument doc = web.Load(Url);
        doc.Save("a.html");
但问题是保存的网站的来源与原来的不同。是否有办法防止更改源。或者,也许有另一种方法可以在DOM中移动,只更改特定的内容(比如在chrome开发工具中,您可以稍后自动保存为HTML)

-----------编辑--------

例如,它可以在eBay上看到。我不能发布一个链接,因为这将是广告,但如果你只是尝试在任何项目提供此代码,你会看到发生了什么

----------编辑2--------


eBay似乎正在使用iframes,而HAP无法处理它。它里面的和标签被删除了,这可能就是为什么保存的网站差异如此之大的原因。

我最近一直在使用HtmlAgilityPack,但我从未遇到过这个问题

我所做的是:

var wc = new WebClient();
var html = wc.DownloadString(@"http://www.example.com");
var doc = new HtmlDocument();
doc.LoadHtml(html);
var nodes = doc.SelectNodes("//XPath/Query");
这会改变html内容吗?

HtmlAgilityPack(HAP)不一定会写出它读取的相同html。如果您进行检查,您将看到写入(
WriteTo
方法)会将解析的节点推出。如果原始服务器发送无效的HTML,HAP将在解析过程中清除它


如果您需要保存原始文件,请使用HAP并加载已保存的文件。

您能举例说明其所做的更改吗?之后您将如何处理
HtmlDocument
?从您发布的内容来看,您真正需要做的是对网站执行
HTTP GET
,并将返回的内容以字符串形式保存在磁盘上,HTML Agility Pack没有增加任何价值,只是对您描述的源代码进行了修改。您请求的服务器是否可能基于
UserAgent
发送不同的文档?之后,我想在DOM中搜索每一段文本,并将其替换为每段文本的编号。但不幸的是,即使不做任何更改,格式也会发生变化(在本例中,格式是提供本身,它的所有样式都是用HTML代码编写的)。而用户代理则取自Chrome。这不会改变内容。但是看看编辑,我想我发现了问题。很好的建议,我认为这适用于这种情况。