C# 使用HTMLAgilityPack刮表内部注释

C# 使用HTMLAgilityPack刮表内部注释,c#,web-scraping,html-agility-pack,C#,Web Scraping,Html Agility Pack,我想使用HTMLAgilityPack在注释中创建一个表。例如,在页面上 有一个带有id=“team\u pitching”的表。我可以通过以下方式以文本块的形式获取此评论: var tags = doc.DocumentNode.SelectSingleNode("//comment()[contains(., 'team_pitching')]"); 但是,我更喜欢从表中选择行,如下所示: var tags = doc.DocumentNode.SelectNodes("//comment

我想使用HTMLAgilityPack在注释中创建一个表。例如,在页面上 有一个带有
id=“team\u pitching”
的表。我可以通过以下方式以文本块的形式获取此评论:

var tags = doc.DocumentNode.SelectSingleNode("//comment()[contains(., 'team_pitching')]");
但是,我更喜欢从表中选择行,如下所示:

var tags = doc.DocumentNode.SelectNodes("//comment()[contains(., 'team_pitching')]//table//tbody//tr");

但它们都返回null。有没有办法做到这一点,这样我就不必手动解析文本来获取所有表数据

示例HTML-我正在查找
中的节点:

这里没有有趣的HTML


注释的内容不会被解析为DOM节点,因此不能使用单个XPath搜索外部注释和内部注释

您可以获取注释节点的
InnerHTML
,修剪注释标记,将其加载到
HtmlDocument
中并对其进行查询。像这样的东西应该有用

var commentNode = doc.DocumentNode
    .SelectSingleNode("//comment()[contains(., 'team_pitching')]");
var commentHtml = commentNode.InnerHtml.TrimStart('<', '!', '-').TrimEnd('-', '>');
var commentDoc = new HtmlDocument();
commentDoc.LoadHtml(commentHtml);
var tags = commentDoc.DocumentNode.SelectNodes("//table//tbody//tr");
var commentNode=doc.DocumentNode
.SelectSingleNode(//comment()[包含(,'team_pitching')]);
var commentHtml=commentNode.InnerHtml.TrimStart(“”);
var commentDoc=新的HtmlDocument();
commentDoc.LoadHtml(commentHtml);
var tags=commentDoc.DocumentNode.SelectNodes(//table//tbody//tr);

post中必须直接提供代码、数据和错误消息。请阅读指南和帖子,提供简明的HTML示例,反映您感兴趣的原始文档的部分内容,同时说明您存在的问题。这是可行的,但它并没有具体回答问题。
<p>not interesting HTML here</p>
<!-- <table id=team_pitching>
    <tbody><tr>...</tr>...</tbody>...</table> -->
var commentNode = doc.DocumentNode
    .SelectSingleNode("//comment()[contains(., 'team_pitching')]");
var commentHtml = commentNode.InnerHtml.TrimStart('<', '!', '-').TrimEnd('-', '>');
var commentDoc = new HtmlDocument();
commentDoc.LoadHtml(commentHtml);
var tags = commentDoc.DocumentNode.SelectNodes("//table//tbody//tr");