在c# .net中获取html页面源代码时出错

本文关键字:源代码 出错 html net 获取 | 更新日期: 2023-09-27 18:16:43

我想获得一个网站在c# .net与WebClient的所有源代码,我用c#窗体创建了一个简单的代码我尝试另一个网站,它工作正确,但我需要这个网站,我不能得到它。我的代码:

 using (WebClient client = new WebClient())
            {
                client.Encoding = Encoding.UTF8;
                client.Encoding = UTF8Encoding.UTF8;
                string htmlCode = client.DownloadString("http://www.feleziran.ir/products/milgerd");
                byte[] bytes = Encoding.Default.GetBytes(htmlCode);
                htmlCode = Encoding.UTF8.GetString(bytes);
            }

当我使用断点并在xml中获取视图时,为htmlDode显示此消息:

无法显示XML页面无法使用样式查看XML输入床单请更正错误,然后单击"刷新"按钮,或请稍后再试。


在文档的顶层无效。错误处理资源'文件:C:////用户/用户/AppData/本地/Temp/VSD1.tmp.XML…

?^

有更好的方法吗?如何解决?

在c# .net中获取html页面源代码时出错

Html文件不一定总是有效的XML文件。因此,永远不要用XML查看器显示它。试着保存它,然后用浏览器打开它。

 using (WebClient client = new WebClient())
 {
      client.Encoding = Encoding.UTF8;
      client.Encoding = UTF8Encoding.UTF8;
      string htmlCode = client.DownloadString("http://www.feleziran.ir/products/milgerd");
      System.IO.File.WriteAllText("c:''htmlfile.html", htmlCode);
 }

无论如何,这是不够的,因为你应该解析html中的每个链接并下载它们

您还没有提供所有的代码,因为看起来您随后将htmlCode字符串保存到临时文件中,然后将内容提供给XML查看器。

无论如何,问题是,从这个特定的网站下载的HTML是HTML5标记-根据定义,HTML5并不是严格的xml兼容。例如,它包含一行<meta name="viewport" content="width=device-width, initial-scale=1.0">, XML解析器不会接受它。

所以你可能想改变你如何查看下载的HTML标记。

此外,代码中还有另一个问题-您已经使用client.DownloadString方法获得适当的文本,并且不需要以下两行代码将其更改为byte[]然后返回string