阻止Html敏捷包更改源代码

本文关键字:包更改 源代码 Html 阻止 | 更新日期: 2023-09-27 18:00:49

我不想更改一堆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(。

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

例如,它可以在易趣上看到。我不能发布链接,因为这将是广告,但如果你只是在任何商品上尝试这个代码,你会看到发生了什么。

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

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

阻止Html敏捷包更改源代码

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

如果需要保存原始文件,请使用WebClient.DownloadString,然后使用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内容吗?