gpt4 book ai didi

c# - HtmlAgilityPack 的字数

转载 作者:行者123 更新时间:2023-12-04 04:14:46 27 4
gpt4 key购买 nike

我需要获取网页上的总字数。这个方法返回的数字是336。但是当我从wordcounter.net手动查看时,大约是1192个字。我怎样才能得到文章的字数?

int kelimeSayisi()
{
Uri url = new Uri("https://www.fitekran.com/hamilelik-ve-spor-hamileyken-hangi-spor-nasil-yapilir/");
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
string html = client.DownloadString(url);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var kelime = doc.DocumentNode.SelectNodes("//text()").Count;
return kelime;
}

最佳答案

正如 HereticMonkey 在评论中提到的,您只是检索文本节点的总数,因此您需要计算 InnerText 中的单词数。 .还有一些您最有可能想做的其他事情:

  • 只看页面正文
  • 排除脚本节点,以免返回 JavaScript

  • 我已经编写了一个修改过的代码版本,它通过拆分空格字符来计算单词,并且只将以字母开头的字符串视为单词:
    int kelimeSayisi()
    {
    Uri url = new Uri("https://www.fitekran.com/hamilelik-ve-spor-hamileyken-hangi-spor-nasil-yapilir/");
    WebClient client = new WebClient();
    client.Encoding = System.Text.Encoding.UTF8;
    string html = client.DownloadString(url);
    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml(html);

    char[] delimiter = new char[] {' '};
    int kelime = 0;
    foreach (string text in doc.DocumentNode
    .SelectNodes("//body//text()[not(parent::script)]")
    .Select(node => node.InnerText))
    {
    var words = text.Split(delimiter, StringSplitOptions.RemoveEmptyEntries)
    .Where(s => Char.IsLetter(s[0]));
    int wordCount = words.Count();
    if (wordCount > 0)
    {
    Console.WriteLine(String.Join(" ", words));
    kelime += wordCount;
    }
    }
    return kelime;
    }

    这将返回 1487 的总字数,并将所有被视为单词的内容写入控制台,以便您可以查看所包含的内容。可能是 wordcounter.net 排除了页眉和页脚等一些内容。

    关于c# - HtmlAgilityPack 的字数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60929281/

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