我想知道从许多(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>
因此提取的信息存储在具有该页面名称的文本文件中,并且仅包含: 页面标题=运动...... content = sport ....
我的问题是有任何工具或软件可以做到吗? 什么是字段处理这个问题的名称..像DOM或其他一些?
我要感谢任何人可以给我一个关于这个问题的说明。
我的编程语言是C#..和Matlab谢谢
答案 0 :(得分:0)
使用AngleSharp
,您可以通过IHtmlDocument.Title
获取标题元素,并使用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