piapia123
ja

HTML 構造解析

テキスト

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

⚠️ 通信は行いませんので、ページはご自身で取得してください(ブラウザーで開いてソースを表示するか、`curl -s https://example.com > page.html`)。得られるのはサーバーが返した生の HTML で、描画後の DOM ではありません。スクリプト・リンク・meta タグの分析にはむしろこちらが適しています。 このツールが答えるのは具体的ないくつかの問いです:見出し構造は揃っているか? alt のない画像はいくつか? タグは全部でいくつ、どれが多いか? タグを除くと本文は何か? 最も実用的なのは階層飛びの検出です。文字サイズを見ても分かりません —— ページは正常に見えるのに、スクリーンリーダーと検索エンジンはこの構造でページを理解しています。`<h1>` から直接 `<h3>` へ飛ぶと、内容が誤った階層に置かれます。 ⚠️ 解析について 2 点明記します: 誤りを直しません。 ブラウザーは書き忘れた `</div>` を補い、`<table>` の中でずれたタグを移動させます。ここで使うパーサーはそれをしません —— 見たいのは元のテキストに実際に書かれていることです。閉じていないタグは書き手が知るべき事実であり、パーサーが黙って補えばまさにそれが見えなくなります。代償として、完全な HTML5 パーサーではなく寛容なタグ分割器ですが、ここでの問いに答えるには十分です。このパーサーはサイト全体で共有しているもの(HTML → Markdown、UBB 変換、XPath も同じものを使っています)なので、同じページはどのツールでも同じように読めます。 ページの良し悪しを判定しません。 階層飛びや alt の欠落はヒントであってエラーではありません。SPA の DOM は JS が構築するため、静的な HTML に `h1` がなくても正常です。また `alt=""` と「alt 属性がない」は別のことで、ここでは分けて数えます —— 前者は明示的な宣言、後者は単なる漏れです。すべてブラウザー内で完結します。

機能

  • 見出し階層:h1〜h6 を順に、それぞれのテキスト付きで表示(見出し内のインラインタグは透過し、`<h2>Hello <em>world</em></h2>` は `Hello world` と読めます)
  • ⚠️ 階層飛びの検出:`<h1>` から `<h3>` へ飛ぶと指摘し、なぜ問題かを説明します
  • ⚠️ h1 がない場合は「SPA の骨組みなら正常」と明示 —— 単に 0 を出すだけにしません
  • リンク:すべての `<a href>` のアドレスとアンカーテキスト、`rel` と `target`(なければ「(なし)」)を表示し、外部リンクは区別します
  • ⚠️ リンクの種類:内部・外部・アンカー・mailto・tel・javascript:(危険。赤で強調し説明を添えます)・ダウンロード・空リンクを分類し、各件数と割合を示します
  • 画像:⚠️ alt の欠落と `alt=""` を別々に集計 —— 前者は漏れ、後者は明確な宣言です
  • タグ頻度:出現回数順に、各タグの割合も表示。この HTML が何で組み立てられているかが分かります
  • 本文テキスト:タグを除いた本文(script と style の内容は除く)。ブロック要素の位置で改行します
  • 文書情報:title、lang、meta description、meta viewport
  • 集計:バイト数、タグ総数、本文の文字数、コメント数
  • ⚠️ タグの補正はしません —— 元のテキストに書かれていることがすべてで、閉じていないタグは閉じていないままです
  • ⚠️ 属性値の中の `>` や script の中の `<` で走査がずれません

使い方

  1. HTML を貼り付けます(ページ全体でも断片でも可)
  2. 本文が欲しい場合は「タグを除いた本文テキストも出力」をオンにします
  3. 文書情報 → 見出し階層 → 階層飛び → リンク → 画像 → タグ頻度の順に確認します

よくある質問

ブラウザーの HTML パーサーを使わないのはなぜですか?
パーサーは誤りと見なした HTML を修正しますが、解析ツールが見たいのは元のテキストに書かれていることそのものだからです。閉じていない `<div>` や `<table>` の中でずれたタグは、書き手が知るべき事実です —— 黙って補われれば見えなくなります。構造上の理由もあります:このサイトの変換系ツールはすべて純関数で、`document` に触れるとブラウザーのない環境でテストできなくなります。そのため DOM に依存しないパーサーをサイト全体で共有しています(HTML → Markdown、UBB 変換、XPath も同じものを使っています)。HTML5 の解析アルゴリズムを完全に実装したものではなく、タグとテキストの分割に留まることはページ上に明記しています。
「alt がない」と「alt=""」はどう違うのですか?
大きな違いがあります。alt 属性がないのは漏れで、スクリーンリーダーは画像を説明できず、ファイル名(「IMG_2043.jpg」)を読み上げるしかありません。`alt=""` は「これは装飾用で、読む意味がない」という明確な宣言で、読み上げはスキップされます。両者を一緒に数えると、正しく `alt=""` を書いたページが書き忘れと同じくらい悪く見えます —— しかも直す方向は正反対です:前者は説明を足し、後者はそのままにします。
h1 がないのに正常な場合があるのはなぜですか?
SPA の HTML はしばしば骨組みだけだからです。内容も見出しも JavaScript がブラウザー内で構築するため、サーバーが返す文書に `<h1>` はそもそもありません。検索エンジンにはその場合の扱いがあります。一方、サーバー側で描画する文書やブログ記事で h1 がなければ、たいていは漏れです。どちらなのかはこのツールには判断できないので、両方の可能性を示します。
タグ頻度は何の役に立ちますか?
その HTML が何で組み立てられているかを一目で見るためです。`<div>` だらけならレイアウトを入れ子で作っており、`<table>` が多いなら表か古いレイアウト、`<span>` が異常に多いならリッチテキストエディターからの貼り付けが疑われ、多くの場合簡略化できます。数を示すだけで評価はしません —— 数そのものに良し悪しはありませんが、調べる糸口にはなります。
取り出した本文はそのまま使えますか?
用途によります。「この HTML が概ね何を言っているか」の忠実な要約であり、文字数、要約、内容確認には十分です。ただしレンダリング結果ではありません:CSS の content、JavaScript が挿入したテキスト、`:before` 擬似要素は含まれません。正確な描画テキストが必要なら、ブラウザーの検証ツールかヘッドレスブラウザーを使ってください。
`javascript:` リンクを別扱いするのはなぜですか?
この分類表で唯一安全性に関わる種類だからです。`<a href="javascript:...">` はクリック時にスクリプトを実行し、XSS の典型的な入口であり、テンプレートの連結ミスの痕跡でもあります。他の種類はせいぜい書き方の問題ですが、これは実際の脆弱性になり得ます —— そのため「その他」に埋もれさせず、独立した行として赤で表示し説明を添えています。

関連ツール