html-parserの紹介 — #:g1

Posted 2014-08-23 15:40:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の236日目です。

html-parserとはなにか

 html-parserは、Alex Shinn氏によるChicken用のHTMLのパーザです。HTMLをsxmlに変換することも可能。

パッケージ情報

パッケージ名html-parser
Chicken eggs:html-parser - The Chicken Scheme wiki

インストール方法

$ sudo chicken-install html-parser

すれば、

(use html-parser)

(require-extension html-parser)

試してみる

 html-parserは、Oleg Kiselyov氏のSSAXパーザのような、きっちりとしていて拡張性のあるインターフェイスでありつつ、壊れていたりすることの多いウェブのHTMLも簡便に扱えることを目標に作られたHTMLパーザとのこと。
用意されているのは下記のような関数です。

 こんな感じの一行野郎も簡単に書けます〈(use http-client html-parser sxpath sxpath-lolevel)した状態で〉。

(for-each (compose print sxml:string-value) ((sxpath "//li/a") (html->sxml (with-input-from-request "http://tips.cddddr.org/scheme/index.cgi?c=a" #f read-string))))
;>> CGI を作る
;>> CPUのエンディアンを調べる
;>> CPUのワードサイズを調べる
;>> HTML を処理する
;>> InterWikiName
;>> R5RS ライブラリを R6RS ライブラリに加工する
;>> R6RS と SRFI で非互換な点
;>> XML を処理する
;>> XPath を使う
;>> anaphoric if
;>> quasisyntax を使う
;>> ...
               

一応の解説ですが、逆引きSchemeの項目一覧ページからli要素を抜き出す、という処理です。

まとめ

 今回は、html-parserを紹介してみました。
ちょっとしたテキスト処理は一行野郎で頑張ることも多いと思いますが、ちょっと込み入った処理になると、Common LispやSchemeで書いた方が早かったりしますよね。

comments powered by Disqus