Clojarsにweb-scraperというのを上げてみた

web-scraper 0.0.2 - Clojars

最近はClojureを趣味で書いてまして、web-scraperというものをつくって clojarsというサイトに上げたのでご報告。まあ、単なるWebページをスクレイプするという ものなんですが、HtmlUnitというJavaのライブラリを使っていてJavaScriptを解釈して くれるので、最近のJavaScriptいっぱい使っているサイトでもある程度スクレイプできる というものです。

こんな感じで project.clj に足してもらって lein deps でインストールして

:dependencies [[org.clojars.ka2u/web-scraper "0.0.2"]]

こんな感じでスクレイプできます。

(ns something.scrape
    (:require [org.clojars.ka2u/web.scraper :refer :all]
              [clojure.pprint :as pp]))

(defn scrape []
  (let [client (default-mode! (make-client browser-chrome))]
    (-> (get-page client "http://example.com")
      (page->enlive)
      (select-text-node [:div#foo :table :tbody :tr :td])
      (pp/pprint))))

(scrape)

まだ、Clojure書き始めてそんなにたってないので、書き方とか自信なかったんですが 先日 Tokyo.clj #22 という勉強会に参加して、主催者の@tnoborioさんとペアプロする 機会に恵まれ、このライブラリの中身を見てもらえまして、そこそこまともだということ がわかったのでよかったです。

ペアプロでは、3つのマクロをひとつに整理すること、set系のメソッドは!をつけるなどを やりました。時間内に終わらなくて、しかも最終的には2つのマクロになりましたが コードはだいぶ減りました。やはり、知っているひとにコード見てもらえるのは自信になるので とてもよかったなと思います。