理系のための恋愛論をGroovyでスクレイピングする!
理系のための恋愛論をPSPで読みたかったので、テキストファイルにスクレイピングするスクリプトをgroovyで書いてみました。
参考にしたのは以下の記事
Groovyでスクレイピングしてみる(NekoHTML編) - No Programming, No Life
上の記事でも触れているようにnekohtml の nekohtml.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 }
あとはPSPにEjPSPReaderでも入れて読めばいいじゃない!