⚠️ 記事内に広告を含みます。

テキストのHTMLのタグを除去する方法

コマンドライン上でhtmlを取得すると<p>などといったカッコで囲われたhtmlタグが入っていてテキストが見にくくなります。

このHTMLタグを削除して本文だけ出力する方法を紹介します。

sedでhtmlタグを除去する

シンプルにhtmlタグを正規表現で指定してsedで除去する方法です。

$ cat content | sed -e 's/<[^>]*>//g' 
→これで<p>や</meta>などが除去できる。

タグの他にも&から始まるhtmlの特殊文字(&nbspなど)が含まれていることもあります
$ cat content | sed -e 's/<[^>]*>//g' -e 's/\&nbsp/ /g'
→これで除去できます。

html特殊文字も正規表現で除去できそうですが、一つ一つ意味がありそれをすべて置換するのは大変そうです。

テキストブラウザを通してタグを除去

コマンドライン上で表示するテキストブラウザというものがあります。

代表的なものはlynxやw3mです。

htmlファイルを読み込んで表示できるのでhtmlタグや特殊文字を削除可能です。

これらは標準で入っていないのでインストールの必要があります。

$ sudo apt install w3m

$ sudo apt install lynx
インストールはどっちでもよい

テキストファイルを用意して読み込んでみる

# lynx -dump -force-html htmltext

# cat htmltext | w3m -dump  -T text/html 
# w3m -dump -T text/html htmltext

dumpオプションはそのまま標準出力に出力させるために付けています。

-force-htmlや-T text/htmlはファイル名が.htmlでなくともhtmlファイルとして内容を解釈させるために付けています。

w3mやlynxを使うと特殊文字もしっかりと解釈されて表示されています。

$ curl -s example.com
<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;

    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>
</head>

<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this
    domain in literature without prior coordination or asking for permission.</p>
    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>


$ curl -s example.com | w3m -dump -T text/html
Example Domain

This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.

More information...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です