2011-02-03 6 views
0

ディレクトリにある一連のHTMLファイルのマスターインデックスファイルを作成しようとしています。これらのファイルはきれいではないので、私が見たlibsの中には、うまくやっているように見えないものもあります。これらのファイルの多くは、tempディレクトリから取得されるか、またはファイルスラック(多くの場合、ergo不完全なファイル)から切り出されます。さらに、たまにHTMLを書く人もいます。潜在的に破損したHTMLファイルとヒット数をカウントする "キーワード"の検索

私は基本的にディレクトリを列挙して、私はStreamReaderを文字列に、それはテキストファイルと同じように内容をダンプすることができますことを願ってい

string[] FileEntries = Directory.GetFiles(WhichDirectory); 

     foreach (string FileName in FileEntries) 
     { 
      using (StreamReader sr = new StreamReader(FileName)) 
      { 
       HTMLContents = sr.ReadToEnd(); 
      } 

のようなものを使用することに決めました。

これは世界で最もクリーンなHTMLではないことを考えれば、配列から解析したいことがいくつかあります。

  1. 任意の形式(例:1/1/11、1月1日、2011、1-1-11、JAN-1から2011など)の日付の任意のインスタンスとする文字列にこれらをダンプ後で読み返してください。うまくいけば、日付の「インスタンス」を見つけるためのlibや何かがあります。

  2. さまざまな "キーワード"を1行ずつ並べてテキストファイルを読み込んで、HTMLを探します。 「Bob Evans」や「Sausage Factory Ltd」などのようなものです。その後、「キーワード」が表示される回数を数えたいと思います。問題は、私は正規表現を知っているユーザーに頼らなければならないことを望んでいないということです。だから、

、所望の出力は、このようなものになるだろう:

BobEvans9304902.html
タイトル:ボブ・エバンスシークレットソーセージのレシピが見つかり

日付: "10月2日、2009"、 "7/22/09"

"ボブ・エヴァンスソーセージ":30本のヒット

「パプリカ」:2本のヒット

は「それを酷使しない」:5安打

私が見てきたすべてのソリューション

これまでのところ、彼らは、単一の文字や単語のために(LINQ)の仕事のように見えるか、分割します"きちんとした"文を単語に変換する。私は文字列の新しいコピーを作成し、すべてのHTMLタグを取り除く必要がないことを願っています。なぜなら、これはいつもきちんとしているとは限らず、大量のファイル処理に別のステップを追加したくないからです。それがそれを行う唯一の方法だとすれば、それもそうです。

答えて

2

html agility packのような不適切な形式のXMLを処理するHTML to XMLパーサを調べたいと思うかもしれません。次に、コンテンツに注目し、XPathクエリを使用してキーワードを検索/カウントすることができます。私はあなたがおそらくまだ日付を処理する正規表現が必要になると思います。

関連する問題