gpt4 book ai didi

c# - Htmlagilitypack - 获取文本内的所有文本+链接

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

我有一种方法可以提取超过 XX 个单词的文本 block 。问题是它不会返回该文本内的链接。

我的方法:

public string getAllTextHTML(string _html)
{
string _allText = "";
try
{
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(_html);

document.DocumentNode.Descendants()
.Where(n => n.Name == "script" || n.Name == "style")
.ToList()
.ForEach(n => n.Remove());

RemoveComments(document.DocumentNode);

var root = document.DocumentNode;
var sb = new StringBuilder();
foreach (var node in root.DescendantNodesAndSelf())
{
if (!node.HasChildNodes)
{
string text = node.InnerHtml;

if (!string.IsNullOrEmpty(text))
{
int antalOrd = WordCounting.CountWords1(text);

if (antalOrd > 25)
{
text = System.Web.HttpUtility.HtmlDecode(text);
sb.AppendLine(text.Trim());
}
}
}
}

_allText = sb.ToString();
}
catch (Exception)
{
}

_allText = System.Web.HttpUtility.HtmlDecode(_allText);
return _allText;
}

我怎样才能使它同时获得文本中的链接?

最佳答案

我猜下面这行有问题:

if (!node.HasChildNodes)

因为,链接( anchor )是 htlm 标签,您排除了将 anchor 标签作为子标签的 html 标签。

这是返回链接的简单示例:

String html = "<p>asdf<a href='#'>Test</a>asdfasd</p>";

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

String p = (from x in doc.DocumentNode.Descendants()
where x.Name == "p"
select x.InnerHtml).FirstOrDefault();

关于c# - Htmlagilitypack - 获取文本内的所有文本+链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443013/

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