2016-03-29 6 views
0

私は、HTMLテキストを掃除する方法を探しています。これらは通常、プログラマーではない人によって書かれており、HTMLにはいくつかの問題があります。ここで私が試したものです:jsoup - 不足しているタグと壊れているタグを含むHTMLをクリーニングする

Parser p = Parser.htmlParser(); 
String test = "Here is a <i>fake</> message.<br><b><i>- Publisher</b></i>"; 
Document d = p.parseInput(test, StringUtils.EMPTY); 
System.out.println("BEFORE: " + test); 
System.out.println("JSPARSED: " + StringUtils.remove(d.body().html(), "\n")); 
System.out.println("JSOUP: "+ Jsoup.clean(test, StringUtils.EMPTY, Whitelist.relaxed())); 

出力は次のとおりです。

BEFORE: Here is a <i>fake</> message.<br><b><i>- Publisher</b></i> 
JSPARSED: Here is a <i>fake message.<br><b><i>- Publisher</i></b></i> 
JSOUP: Here is a 
<i>fake message.<br><b><i>- Publisher</i></b></i> 

所望の出力は次のようになります。

Here is a <i>fake</i> message.<br><b><i>- Publisher</i></b> 

はそれがjsoupを使用して上記のような状況のためにHTMLをきれいにすることは可能です?

EDIT:もう少しコンテキストを追加するには、このHTMLブロックが製品の説明としてWebサイトに表示されます。これは、通常、マーケティングチームやサイト運営者によって書かれ、時にはHTMLに間違いがあります。現在、JTidyをHTMLクリーンアップに使用してからWebサイトに表示しています。

私は最近、何個の製品でエラーが発生しているのかを確認するプログラムを実行しました。エラーが発生した製品は約30,000件でした。それらのいくつかを見直した後、エラーの大部分は誤った順序(プログラムで修正された)のタグであるが、例のようにタグが見つからないか破損したというエラーは、意図したとおりに修正されていない。

+0

不正な形式のHTMLをプログラマチックに書いた人の意図を判断することは非常に難しいと思われます。もしあなたがこれをやりたい理由を説明すれば、誰かがより良い解決法を提案するかもしれませんか? – Chris

答えて

0

不正な形式のHTMLスニペットを30k自動修正すると、一貫した結果が得られる可能性は低いです。チャンスは、あなたはさらに犯したコンテンツを得るでしょう。

は自分に好意を行います

  • 禁じるプログラムで、新しい/編集した説明は、壊れたHTMLを保存します。
  • これらを手動で修正する(またはマーケティングチームに委任して最初にエラーが発生する)人を雇う。
+0

ありがとうございます。これはおそらく最善の方法です。 – Nick

関連する問題