【问题标题】:Parsing innertext of html解析html的内部文本
【发布时间】:2016-05-28 16:54:46
【问题描述】:

这是我正在解析的 html 的一部分

<li><a href="http://some.link.com/4DFR6DJ43Y/sessionid?ticket=ASDSIDFK32423421" target="_blank">http://some.link.com/4DFR6DJ43Y/sessionid?ticket=ASDSIDFK32423421</a></li>

我想得到http://some.link.com/4DFR6DJ43Y/sessionid?ticket=ASDSIDFK32423421 作为输出。

到目前为止我已经尝试过

        HtmlDocument document = new HtmlDocument();
        document.LoadHtml(responseFromServer);


        var link = document.DocumentNode.SelectSingleNode("//a");

        if (link != null)
        {  
            if(link.innerText.Contains("ticket"))
            {
                Console.WriteLine(link.InnerText);
            }
        }

...但输出为空(未找到内部文本)。

【问题讨论】:

  • 使用 link.innerText.Contains

标签: c# html parsing html-agility-pack innertext


【解决方案1】:

这可能是因为SelectSingleNode() 返回的HTML 文档中的第一个链接 不包含文本"ticket"。您可以直接在 XPath 中检查目标文本,如下所示:

var link = document.DocumentNode.SelectSingleNode("//a[contains(.,'ticket')]");

if (link != null)
{
    Console.WriteLine(link.InnerText);
}

如果您愿意,也可以使用 LINQ 样式:

var link = document.DocumentNode
                   .SelectNodes("//a")
                   .OfType<HtmlNode>()
                   .FirstOrDefault(o => o.InnerText.Contains("ticket"));

if (link != null)
{
    Console.WriteLine(link.InnerText);
}

【讨论】:

  • Xpath 解决方案正是我所需要的。短而甜。谢谢。
【解决方案2】:

您提供了一段无法编译的代码,因为未定义 innerText。如果您尝试此代码,您可能会得到您所要求的:

HtmlDocument document = new HtmlDocument();
document.LoadHtml(html);

var link = document.DocumentNode.SelectSingleNode("//a");

if (link != null)
{
    if(link.InnerText.Contains("ticket"))
    {
        Console.WriteLine(link.InnerText);
    }
}

【讨论】:

  • 谢谢你复制/粘贴时的错字。这将返回 NULL。我已经选择了上面发布的 Xpath 解决方案。感谢您的宝贵时间。
【解决方案3】:

您可以使用 HTML Agility Pack 代替 HTML 文档,然后您可以在 HTML 中进行深度解析。有关详细信息,请参阅以下信息。 请参阅以下链接。 How to use HTML Agility pack

【讨论】:

  • HtmlDocument 来自 Html Agility Pack
猜你喜欢
  • 2014-07-26
  • 2013-07-03
  • 2011-10-13
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2020-06-07
  • 1970-01-01
相关资源
最近更新 更多