import
javax.swing.text.html.HTML;
import
javax.swing.text.html.HTML.Tag;
import
javax.swing.text.html.HTMLEditorKit;
import
javax.swing.text.MutableAttributeSet;
import
javax.swing.text.BadLocationException;
import
javax.swing.text.html.parser.ParserDelegator;
import
java.io.InputStreamReader;
import
java.net.URL;
import
java.net.HttpURLConnection;
import
java.util.Enumeration;
public
class
Example
{
private
class
CallbackHandler
extends
HTMLEditorKit.ParserCallback
{
private
String urlReg =
"\\.\\./bbs/board\\.php\\?bo_table=cs_notice&wr_id=([0-9]){2,4}"
;
private
String dataReg =
"([?0-9]){2}-([?0-9]){2}"
;
private
String noticeReg =
"(.*[0-9ㄱ-ㅎㅏ-ㅣ가-힣]+.*[^공지사항]){5,}"
;
@Override
public
void
flush( )
throws
BadLocationException {
System.out.println(
"flush"
);
}
@Override
public
void
handleComment(
char
[] data,
int
pos ) {
System.out.println(
"Cmt "
+
new
String( data ) );
}
@Override
public
void
handleEndOfLineString( String eol ) {
System.out.println(
"EOL "
);
}
@Override
public
void
handleEndTag( Tag t,
int
pos ) {
System.out.println(
"End <!--"
+ t +
"-->"
);
}
@Override
public
void
handleError( String errorMsg,
int
pos ) {
}
@Override
public
void
handleSimpleTag( Tag t, MutableAttributeSet a,
int
pos ) {
}
@Override
public
void
handleStartTag( Tag t, MutableAttributeSet a,
int
pos ) {
if
( t == HTML.Tag.A ) {
Object str = a.getAttribute( HTML.Attribute.HREF );
if
( str !=
null
) {
if
( str.toString( ).matches(
this
.urlReg ) ) {
System.out.println(
"HREF : "
+ str );
}
}
}
}
public
void
handleText(
char
[] data,
int
pos ) {
String str =
new
String( data );
if
( str.matches(
this
.dataReg ) ) {
System.out.println(
"Data : "
+ str );
}
else
if
( str.matches(
this
.noticeReg ) ) {
System.out.println(
"Notice :"
+ str );
}
}
}
public
void
parse( String str ) {
try
{
URL url =
new
URL( str );
HttpURLConnection con = (HttpURLConnection) url.openConnection( );
InputStreamReader reader =
new
InputStreamReader(
con.getInputStream( ),
"utf-8"
);
new
ParserDelegator( ).parse( reader,
new
CallbackHandler( ),
true
);
con.disconnect( );
}
catch
( Exception e ) {
e.printStackTrace( );
}
}
public
static
void
main( String[] args ) {
Example parser =
new
Example( );
parser.parse( URString );
}