Haskell:
HTMLの解析

方法:

HaskellでHTMLを解析するには、その単純さと柔軟性からtagsoupライブラリを使用します。まず、プロジェクトのcabalファイルにtagsoupを追加するか、cabal install tagsoupを実行してライブラリをインストールしてください。

{-# LANGUAGE OverloadedStrings #-}

import Text.HTML.TagSoup

-- デモンストレーション用のサンプルHTML
let sampleHtml = "<html><body><p>Learn Haskell!</p><a href='http://example.com'>Click Here</a></body></html>"

-- HTMLを解析しリンク(aタグ)をフィルターする
let tags = parseTags sampleHtml
let links = [fromAttrib "href" tag | tag <- tags, isTagOpenName "a" tag]

-- 抽出したリンクを印刷
print links

サンプル出力:

["http://example.com"]

より高度なHTML解析が必要な場合は、文書変換を扱っている場合などにpandocライブラリの使用を検討してください。これは非常に汎用性が高いですが、より複雑です:

import Text.Pandoc

-- Pandocドキュメント(doc)を読み込んだと仮定して、例えば、ファイルから読み取ります
let doc = ... -- ここにPandocドキュメントが入ります

-- ドキュメントをHTML文字列に変換
let htmlString = writeHtmlString def doc

-- ここで、上述のように`htmlString`を解析するか、必要に応じて進めます。

pandocは、多数のマークアップ形式間の変換に焦点を当てたはるかに大きなライブラリなので、それらの追加機能が必要であるか、またはアプリケーションで既に文書形式を扱っている場合に使用してください。