it-swarm-ja.com

HTMLを非破壊的に折りたたんだりインデントしたりするユーティリティ

wgetなどから入力を受け取り、grepを使用してキーワードを検索するスクリプトがあります。 (正規表現を使用してHTMLを解析しようとしないことを約束します。これは、別のはるかに複雑な製品でのコンテンツ検出動作をエミュレートするための便利な方法です。)HTMLコンテンツがそうでない限り、これはうまく機能します。あまりにも厳しく縮小されています。そうである場合、線は非常に長くなる可能性があり(私が見た場合は50 kBを超える)、grepがそれらを窒息させます。

これを改善するために、HTMLを折りたたんだり、再インデントしたりして、より多くの行に分散できるようにしたいと思います。ただし、スクリプトで正確な結果を得るには、コンテンツを変更せずにこれを実行できる必要があります。つまり、無効なタグや閉じられていないタグは修正できず、要素内ではなく要素間でのみ折りたたむ必要があります。

これらの2つの要件は、私が見つけたHTMLの整理またはきれいなユーティリティのすべてを除外しているようです。

UNIXベースのシェルユーティリティ、Perl/python/Rubyモジュールなど、これを実行できるものはありますか?

あるいは、タグの間にいくつかの新しい行を追加するだけでよいので、これを自分で半信頼的に行う方法はありますか?

2
kine

わかりました、これを必要としている他の人のために、私は この素晴らしいスレッド (StackExchangeガイドラインに従ってそのリンクがダウンした場合)で行われた提案を記録しています:

  • HTB2.0-DOSベース- http://www.digital-mines.com/htb/

  • Tabifier-CSS、HTML、およびCスタイルの構文(Javascriptを含む)をサポートします http://tools.arantius.com/tabifier

  • HTML-Kit-Windowsで実行されるフル機能の無料HTMLエディター。TIDYオプションを構成する必要があります[ツール/ Tidyを使用してコードを確認/新しい構成を追加]、「本文のコンテンツのみを出力する」と「非変換」を除くすべてのスイッチのチェックを外しますエンティティへのスペースの分割」をクリックしてから、アクション/ツール/ HTML Tidy /インデントタグに移動するか、美化してください http://www.chami.com/html-kit/

  • SCREEM-Linuxのみ-

  • NetBeans-「NetBeansでhtmlファイルを開いた後、「ソース」をクリックし、「フォーマット」を選択します。それだけです。」-

  • WebmasterGateのHTML/XHTMLBeautifier-オンラインツール- http://www.webmastergate.com/html-beautifier/

  • Aptana Studio(バージョン2.0.4)-「[編集]> [フォーマット]を選択するか、Ctrl-Shift Fを押してhtmlコードをフォーマットします。フォーマット機能は、[Windows]> [設定]から構成し、[Aptana]> [エディター]> [HTML]> [フォーマット]を選択し、[編集]をクリックします。新しい行をとるべきではないタグを追加し、それを新しい優先として保存します。」 -

  • UniversalIndentGUI-内部でHTBBeautifierを使用します-Notepad ++の実行中に、[プラグイン]> [プラグインマネージャー]> [プラグインマネージャーの表示]に移動し、使用可能なリストから[UniversalIndentGUI]を選択してインストールします。

  • これらのオプションを整理します。

(コードが箇条書きの直後に続く場合、マークダウンエンジンに問題があるように見えるため、フィラーテキスト)

[HTML, XHTML, XML Options]
anchor-as-name:no
doctype:omit
drop-empty-paras:no
fix-backslash:no
fix-bad-comments:no
fix-uri:no
input-xml:yes
join-styles:no
lower-literals:no
preserve-entities:yes
quote-ampersand:no
quote-nbsp:no

[Diagnostics Options]
show-warnings:no

[Pretty Print Options]
indent:yes
indent-spaces:3
tab-size:3

[Miscellaneous Options]
quiet:yes

私はまだこれらのオプションを試していません(input-xml: yesおよびforce-output: yes言及されたHTMLtidyへの設定の提案 https://stackoverflow.com/questions/7151180/use-html-tidy-to-just-indent-html-code 私の当面の目的のために機能します)、もしそうなら、この答えを更新してください。

HTML Tidy を介してファイルを実行します。

例えば:

curl http://superuser.com | tidy -i | less

-iは入力のインデント用です。

0
Der Hochstapler

ドキュメントを解析/修正せずにこれを行う最も簡単な方法は、終了タグを探し、その後に開き角かっこまたは空白を探して、改行を挿入することです。検索する:

(</[^>]+>)(<|\s)

と置き換えます

$1\n$2

それでも、各出力ドキュメントを手動でチェックして、何も壊れていないことを確認する必要がありますが、これはほとんどの場合に機能するはずです。きれいな出力にはなりませんが、50KBの行を殺すはずです。

0
Darth Android

別のオプションは、引数なしで pup を使用することです。

pup

xmllint--htmlはHTMLパーサーを使用し、--format入力を再フォーマットします。 STDINのダッシュは省略できません。

xmllint --format --html -

XmlStarletは、HTMLパーサーの使用もサポートしています。 foformatの略です。見る xml fo -h助けを求めて。

xml fo --html

tidyのメイン実装はHTML5をサポートしていませんが、 tidy-html5 はサポートしています。 brew install tidy-html5インストールtidy-html5 なので /usr/local/bin/tidy OSXで。

0
nisetama