【问题标题】:C# Html parsing HtmlAgilityPack not workingC# Html 解析 HtmlAgilityPack 不起作用
【发布时间】:2016-07-04 05:19:15
【问题描述】:

我正在尝试读取 html 表格,以便使用 HtmlAgilityPack 读取和更改表格。我尝试了非常不同的网站,但我的代码不起作用。

SelectSingleNode 函数返回 null。此外,当我调用 SelectNodes 而不是 SelectSingleNode 时,结果再次为空。

示例链接 http://www.uefa.com/livescores/ 有一张桌子。我怎么看这个表?

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml("http://www.uefa.com/livescores/");
var result = doc.DocumentNode.SelectSingleNode("//table");

【问题讨论】:

  • 但我的代码不起作用 什么不起作用?你看到什么错误?描述正在发生的事情。

标签: c# html html-table


【解决方案1】:

您正在使用 LoadHtml 方法,该方法用于加载 HTML 字符串,而不是从 URL 加载 HTML。但是,Load 方法似乎不支持从 URL 加载内容,您可能需要单独下载 HTML,然后将其加载到 HtmlDocument 类中才能使用。

例如:

var url = "http://www.uefa.com/livescores/";
var content = new System.Net.WebClient().DownloadString(url);

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(content);
var hn = doc.DocumentNode.SelectSingleNode("//table");

您也可以使用HtmlWeb 实用程序类:

var web = new HtmlWeb();
var doc = web.Load(url);
var hn = doc.DocumentNode.SelectSingleNode("//table");

【讨论】:

  • 如果解析输出错误,有什么需要解决的吗?因为我的结果不正确。所有的 都在结果的末尾。我无法分享我的实际网页。但结果如下 test 7 test 测试 5 ....
  • 如果您有一个有效的 HTML 文档,您可以使用任何 XPath 语句来选择您需要的标记。
  • html里面有个hr标签,所以xpath也会报错。当我手动删除 hr 标签时,它会修复。因为 hr 没有像 我错了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多