正在解析 html 的内文
Parsing innertext of html
这是我正在解析的 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);
}
}
...但输出为空(未找到内部文本)。
您可以使用 HTML Agility Pack 而不是 HTML 文档,然后您可以在 HTML 中进行深度解析。欲了解更多信息,请参阅以下信息。
见下文link。
How to use HTML Agility pack
这可能是因为 SelectSingleNode()
返回的 HTML 文档中的第一个 link 不包含文本 "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);
}
您提供的一段代码无法编译,因为 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);
}
}
这是我正在解析的 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);
}
}
...但输出为空(未找到内部文本)。
您可以使用 HTML Agility Pack 而不是 HTML 文档,然后您可以在 HTML 中进行深度解析。欲了解更多信息,请参阅以下信息。 见下文link。 How to use HTML Agility pack
这可能是因为 SelectSingleNode()
返回的 HTML 文档中的第一个 link 不包含文本 "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);
}
您提供的一段代码无法编译,因为 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);
}
}