gpt4 book ai didi

c# - 从html获取特定数据

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:01 24 4
gpt4 key购买 nike

我想从 html 中获取特定数据。我正在使用 C# 和 HtmlAgilityPack

这是 HTML 示例:

<p class="heading"><span>Greeting!</span>

<p class='verse'>Hi!<br> //
Hello!</p><p class='verse'>Hello!<br> // i want to get this g
Hi!</p> //

<p class="writers"><strong>WE</strong><br/>

这里是我的 C# 代码:

StringBuilder pureText = new StringBuilder();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(Lyrics);

var s = doc.DocumentNode.Descendants("p");

try
{
foreach (HtmlNode childNode in s)
{
pureText.Append(childNode.InnerText);
}
}
catch
{ }

更新:

StringBuilder pureText = new StringBuilder();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(URL);

var s = doc.DocumentNode.SelectNodes("//p[@class='verse']"); // error

try
{
foreach (HtmlNode childNode in s)
{
pureText.Append(childNode.InnerText);
}
}
catch
{ }

错误:

“HtmlAgilityPack.HtmlNode”不包含“SelectNodes”的定义,并且找不到接受“HtmlAgilityPack.HtmlNode”类型的第一个参数的扩展方法“SelectNodes”(您是否缺少 using 指令或程序集引用? )

最佳答案

您可以尝试使用 XPath 查询语法来选择所有 <p>class='verse' ,像这样:

var s = doc.DocumentNode.SelectNodes("//p[@class='verse']");

然后做同样的事情foreach正如您已经拥有的那样。

更新一:

我不知道为什么上面的代码会为您抛出错误。它已经在我的电脑上测试过,应该可以正常工作。无论如何,如果您接受解决方法,则可以通过这种方式在没有 XPath 的情况下实现相同的查询:

var s = doc.DocumentNode.Descendants("p").Where(o => o.Attributes["class"] != null && o.Attributes["class"].Value == "verse");

此解决方案较长,因为我们需要在检查属性值之前检查节点是否具有类属性。否则,我们会得到 Null Reference Exception如果有<p>没有类属性。

关于c# - 从html获取特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21214224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com