我正在尝试为位于目录中的一堆HTML文件创建主索引文件。可能有5到5000之间的任何地方。这些文件不干净或不好,所以我看到的一些lib似乎不会很好玩。其中许多文件来自临时目录,或者是文件冗余(在许多情况下是ergo不完整的文件)。另外,有时人们只会写一些草率的HTML。
我基本上决定枚举目录并使用类似
的内容string[] FileEntries = Directory.GetFiles(WhichDirectory);
foreach (string FileName in FileEntries)
{
using (StreamReader sr = new StreamReader(FileName))
{
HTMLContents = sr.ReadToEnd();
}
我希望StreamReader能够以与文本文件相同的方式将内容转储到字符数组中。
无论如何,鉴于这可能不是世界上最干净的HTML,我想从阵列中解析一些事情。
任何格式的日期实例(例如,2011年1月1日,1/11/11,2011年1月1日至1月1日,1月1日等),并将这些转储到要读取的字符串中晚点回来。希望有一个lib或用于查找日期“实例”的东西。
逐行读取一个文本文件,其中包含各种“关键字”,以便在混乱的HTML中查找。像“Bob Evans”或“Sausage Factory Ltd”等等。然后,我想计算每个“关键字”出现的次数。问题是我不想诉诸用户必须知道正则表达式。
因此,所需的输出将是这样的:
BobEvans9304902.html
标题:鲍勃埃文斯秘密香肠食谱发现日期:“2009年10月2日”,“7/22/09”
“Bob Evans Sausage”:30次点击
“辣椒粉”:2次点击
“不要过度劳累”:5次点击
到目前为止我看到的所有解决方案似乎只适用于单个字符或单词(LINQ)或将“整齐”的句子分成单词。我希望我不必创建一个新的副本字符串和去掉所有HTML标签,因为它并不总是很整洁,我不想在大规模文件处理中添加另一个步骤。如果这是唯一的方法,那么就这样吧。
答案 0 :(得分:2)
您可能想要研究一种HTML到XML解析器,它可以处理像html agility pack这样格式不良的XML。然后,您可以专注于内容并使用XPath查询来搜索/计算关键字。我希望你可能仍然需要正则表达式来处理日期。