通过HtmlAgilityPack解析表标记出错了

时间:2012-09-04 10:28:00

标签: c# html html-table html-agility-pack

我有一个带有表格的网页,我想要获取所有行,但是当我下载它时,我得到一个奇怪的表格,其中一个<tr>和许多</tr>,所以我可以解析它。我该怎么办?

我的代码:

  WebBrowser wb = new WebBrowser();
  wb.ScrollBarsEnabled = false;
  wb.ScriptErrorsSuppressed = true;
  wb.Navigate(link);
  while (wb.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }
  string htmlDoc = wb.DocumentText;

  doc.LoadHtml(htmlDoc);

  nodesHtml = doc.DocumentNode.SelectNodes("//tr");

但是要获取nodesHtml中的所有行,我只得到一行。奇怪的是,在像FF这样的真实浏览器中,html标签看起来不错,但是在下载页面时 - html出错了。

以下是链接:http://www.lre.com/test/searchresultx.asp?id=19

1 个答案:

答案 0 :(得分:1)

这是错误的,因为页面的HTML非常不合规,
看看w3c's validator给出的结果,你会看到 看到trtd有大量关闭问题。

我的建议是通过Tidy运行HTML或使用HTMLAgilityPack 解析设置。