理系のための恋愛論をGroovyでスクレイピングする!

理系のための恋愛論PSPで読みたかったので、テキストファイルにスクレイピングするスクリプトをgroovyで書いてみました。


参考にしたのは以下の記事
Groovyでスクレイピングしてみる(NekoHTML編) - No Programming, No Life


上の記事でも触れているようにnekohtmlnekohtml.jar と xercesImpl.jar をクラスパスに通す必要があります。めんどくさかったら %USERPROFILE%/.groovy/lib に入れておけばOK


以下、スクリプト。

import org.cyberneko.html.parsers.SAXParser

def MYCOM = "http://journal.mycom.co.jp/";

def allPage = [];
def parser = new XmlSlurper(new SAXParser()) 

def indexPage = parser.parse("${MYCOM}column/rikei/index.html")
def td= indexPage.'**'.findAll{
    it.name() == 'TD'
}

td.eachWithIndex{ it, index ->
    def number = "${td.size() - index}".padLeft(3,'0');
    allPage << [
        title:"第${number}回_" 
                + it.A.text().replace('?','?') .replace('\"','”').replace('/',"/")
        ,url: "${MYCOM}${it.A.@href}"
    ]
}

new File("rikei").mkdir();

allPage.each{ page ->
    println "downlaoding... ${page.title} ${page.url}"
    def contentPage = parser.parse(page.url)
    def content = contentPage.'**'.find{
        it.name()=='DIV' && it.@class=='articleContent'
    }.P.collect{
        it.text() + '\n'
    }.join('\n')
    new File("rikei/${page.title}.txt").newOutputStream() << content
}


あとはPSPEjPSPReaderでも入れて読めばいいじゃない!