在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…
?^
有更好的方法吗?如何解决?
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
。