페이지

2011년 3월 4일 금요일

groovy로 htmlunit을 사용하기

하루에 몇번씩 확인하는 웹페이지가 있습니다.
로그인절차도 거쳐야 합니다.
매시간 이 웹페이지를 읽어서 메모장에 보여주는 스크립트를 작성해보았습니다.

HtmlUnit 준비

http://htmlunit.sourceforge.net/ 에서 라이브러리를 다운받습니다.

클래스패스

htmlunit 을 사용하기위해서 클래스패스에 관련라이브러리들을 추가해야 합니다.

groovy.home/extlib/htmlunit 폴더를 만들고 관련라이브러리를 모두 복사합니다.

conf/groovy-starter.conf 파일에 아래내용을 추가합니다.
load !{groovy.home}/extlib/htmlunit/*.jar

htmlunit.groovy

import com.gargoylesoftware.htmlunit.WebClient
def client = new WebClient()
client.setJavaScriptEnabled(false)

// 로그인처리
def page = client.getPage('로그인주소')


// 첫번째 폼이 로그인폼일경우 page.forms[0]
def j_username = page.forms[0].getInputByName('j_username') // 아이디 입력필드명
j_username.valueAttribute = '아이디'

def j_password = page.forms[0].getInputByName('j_password') // 암호 입력필드명
j_password.valueAttribute = '암호'

page = page.forms[0].submit() // 폼전송, 로그인처리
// 원하는페이지 가져오기
page = client.getPage('원하는페이지주소')

// 파일로 저장하고 html로 저장하고 싶으면 asXml()사용
new File('result.log').write(page.asText())

// 메모장으로 파일을 열어줍니다.
'notepad.exe result.log'.execute()


에러

Caught: java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "org/w3c/dom/NamedNodeMap"
와 같은 에러가 발생하면
/extlib/htmlunit/xml-apis-*.jar 파일을 지워줍니다.

매시간 수행되도록 "제어판>예약된작업" 에 등록합니다.

댓글 없음:

댓글 쓰기