我想做一个html文件下载的东东。
但是,对html进行解析实在太麻烦了,刚开始我是自己写的类来解析,但是有好多的html文件不标准,解析总是出问题。有没有好的办法实现。总体是这样的:
1、输入url,读取这个网页。这个是没有问题的。
2、解析这个网页文件,将其中的图片等都下载到本机上,并修改其中的img标示。
3、修改网页中的A标记。谢谢
但是,对html进行解析实在太麻烦了,刚开始我是自己写的类来解析,但是有好多的html文件不标准,解析总是出问题。有没有好的办法实现。总体是这样的:
1、输入url,读取这个网页。这个是没有问题的。
2、解析这个网页文件,将其中的图片等都下载到本机上,并修改其中的img标示。
3、修改网页中的A标记。谢谢
不过用过另外一个东西叫 HtmlParser 的,用起来还算顺手。
我现在能够使用htmlParser来获取信息,但是不知如何更改它的信息。
如,可以获取一些链接的地址,但是如果要更改它的文字信息就不会了。
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr); HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
HTMLEditorKit.Parser parser = new ParserDelegator();
HTMLEditorKit.ParserCallback callback = htmlDoc.getReader(0);
parser.parse(br, callback, true);
for (HTMLDocument.Iterator iterator = htmlDoc.getIterator(HTML.Tag.A); iterator.isValid(); iterator.next()) {
// href AttributeSet attributes = iterator.getAttributes();
String srcString = (String) attributes.getAttribute(HTML.Attribute.HREF);
System.out.print(srcString);
int startOffset = iterator.getStartOffset();
int endOffset = iterator.getEndOffset();
int length = endOffset - startOffset;
String text = htmlDoc.getText(startOffset, length);
System.out.println(" - " + text);
}