[Gauche] HTMLから本文を抽出するスクリプト

はじめに

を参考に、GaucheでHTMLから本文を抽出するスクリプトをつくってみました。

スクリプト

以下の通りです。参考にしたサイトのものよりだいぶ手抜きですが(コメントやヘッダの削除もしていません)、私が欲しいものは手に入ったので、とりあえずこれでいいやと思っています。

(define (extract-content html)
  (let loop (
      (max-score 0) 
      (content "")
      (contents (string-split html #/<\/?(?:div|td)[^>]*>/)))
    (define (count-punctuations s) (length (string-split s #/[、。!?]/)))

    (if (null? contents)
      content
      (let ((score (count-punctuations (car contents))))
        (when (< max-score score)
          (set! content (car contents))
          (set! max-score score))
        (loop max-score content (cdr contents))))))