【问题标题】:Parsing web pages via C#, XmlDocument.LoadXml通过 C#、XmlDocument.LoadXml 解析网页
【发布时间】:2012-01-22 06:08:27
【问题描述】:

我正在尝试下载一个网页并对其进行解析。我需要到达 html 文档的每个节点。所以我用WebClient来下载,效果很好。然后我使用以下代码段来解析文档:

 WebClient client = new WebClient();

 Stream data = client.OpenRead("http://web.cs.hacettepe.edu.tr/~bil339/");
 StreamReader reader = new StreamReader(data);
 string xml = reader.ReadToEnd();

 data.Close();
 reader.Close();
 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.loadXml(xml);

在最后一行,程序等待一段时间,然后崩溃。它说 HTML 代码中有错误,这是意料之外的,不应该在这里,等等。 有什么建议可以解决这个问题吗?欢迎使用其他解析 HTML 代码的技术(当然是在 C# 中。)

【问题讨论】:

  • loadxml 需要一个xml文件,如果是html页面会抛出异常
  • 一些遵循 xhtml 的页面可以用 XML 阅读器解析,但要解析 any html 页面,您必须使用特殊的 html 解析器。
  • @kashif 检查这里:msdn.microsoft.com/en-us/library/… Denis 你是对的,这种方法不起作用。

标签: c# parsing web xmldocument


【解决方案1】:

使用 HTMLAgilityPack 解析 HTML。格式良好的 HTML 不是 XML,因此无法解析。例如,它缺少所有 XML 文件都需要的 <?xml version="1.0" encoding="UTF-8"?> 序言。 HTML 敏捷包更宽容。

【讨论】:

    猜你喜欢
    • 2016-07-02
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    相关资源
    最近更新 更多