从许多 HTML 页面中提取文本和标题的有效方法

efficient way to extract text and title from many HTML pages

我想知道从许多(1000 html 页)中提取文本并将从每个页面提取的每个文本存储为自己的 html 页面名称的有效方法,

方法是尽可能提取那些页面在谈论什么.. 我已经过测试并看到了一些问题和答案..但是对于提取的纯文本来说效率不高,

对于以下示例..有很多信息,例如链接和格式代码、标签和其他我不感兴趣的信息..因此对于此页面

<html>
    <title>Sport today and tomorrow </title>
    <body>
           <h1> sport players.</h1>
           something....
           <h3> sport plays </h3>
           <img src="sport.jpg"/>
    </body>
</html>

因此提取的信息存储在具有该页面名称的文本文件中,并且仅包含: 页面标题 = 运动 ... 内容 = 运动....

我的问题是有什么工具或软件可以做到这一点吗? 处理这个问题的字段名称是什么.. 像 DOM 或其他一些?

我会感谢任何人可以给我关于这个问题的注释。

我的编程语言是 C#.. 和 Matlab 谢谢

AngleSharp, you can get title element via IHtmlDocument.Title and get heading elements using LINQ OfType<IHtmlHeadingElement>()。以下是控制台应用程序中的示例:

using AngleSharp.Dom.Html;
using AngleSharp.Parser.Html;

....

var raw = @"<html>
    <title>Sport today and tomorrow </title>
    <body>
           <h1> sport players.</h1>
           something....
           <h3> sport plays </h3>
           <img src=""sport.jpg""/>
    </body>
</html>";
var parser = new HtmlParser();
var document = parser.Parse(raw);

var title = document.Title;
var headings = document.All
                       .OfType<IHtmlHeadingElement>()
                       .Select(h => h.TextContent.Trim())
                       .ToList();
Console.WriteLine(title);
Console.WriteLine();
foreach (var heading in headings)
{
    Console.WriteLine(heading);
}

输出:

Sport today and tomorrow

sport players.
sport plays