【问题标题】:How read content of a span tag using HtmlAgilityPack?如何使用 HtmlAgilityPack 读取 span 标签的内容?
【发布时间】:2016-02-19 06:24:33
【问题描述】:

我正在使用 HtmlAgilityPack 从链接(站点)中删除数据。一个站点中有许多p 标签、headerspan 标签。我需要从特定的span 标记中删除数据。

var webGet = new HtmlWeb();
var document = webGet.Load(URL);
foreach (HtmlNode node in document.DocumentNode.SelectNodes("\\span"))
{
      string strData = node.InnerText.Trim();
}

我曾尝试在父标签上使用关键字,但它不适用于所有类型的 URL。

请帮我解决它。

【问题讨论】:

  • 欢迎来到 SO!请参阅“How to Ask”以及链接页面和“minimal reproducible example”。当你说“请帮我解决它”时。我们需要知道它应该如何工作以及它做错了什么。否则,我们无法解决特定问题。

标签: c# html-agility-pack


【解决方案1】:

什么是错误?

你可以先解决这个问题:

foreach (HtmlNode node in document.DocumentNode.SelectNodes("\\span"))

应该是:

foreach (HtmlNode node in document.DocumentNode.SelectNodes("//span"))

但我想要准确的数据。例如,源中的 span 标签过多,如<span>abc</span><span>def</span><span>pqr</span><span>xyz</span>。我希望结果为“pqr”。是否有任何选项可以通过特定标签的计数或索引来获取它?

如果你想获取例如从根开始的第三个span标签:

 doc.DocumentNode.SelectSingleNode("//span[3]")

如果要获取包含文本“pqr”的节点:

doc.DocumentNode.SelectSingleNode("//span[contains(text(),'pqr')]");

后者可以使用SelectNodes来获取文本中所有包含“pqr”的span标签。

【讨论】:

  • 对不起,这是我的错误。我可以得到内容。但我想要准确的数据。例如,源中的 span 标签过多,如 abcdefpqrxyz。我希望结果为 pqr。是否有任何选项可以通过特定标签的计数或索引来获取它?
  • 仍然不确定你想要什么,@M-O,但我会根据你所说的内容更新我的答案
  • 内部文字是动态的。我将尝试您分享的第一个答案。 @Tyress 谢谢。
  • “错误是什么?”与其回答一个问得不好的问题,不如标记它以便改进,然后,一旦它得到了,就回答它。最好有一个问题较少且回答得很好的网站,而不是一个满是问得不好的问题和猜测问题所在的答案的网站。
猜你喜欢
  • 1970-01-01
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多