解析网页后是否需要释放资源
使用过htmlparser的高手,想请教下,在用Parser 解析网页后是不是应该释放资源啊?我做定时抓取网页,但tomcat6在运行一段时间后,从最初的48m 上升到140m左右,如果继续运行,应该还会增长.哪位有这方面的使用心得,请不吝赐教.
Parser parser = new Parser();
try {
parser.setURL(url);
parser.setEncoding(parser.getEncoding());
log.info("Login On Successfully --->" +url);
ObjectFindingVisitor visitorForm = new ObjectFindingVisitor(
FormTag.class);
parser.visitAllNodesWith(visitorForm);
Node[] nodes = visitorForm.getTags();
/* 解析网页得到内容后,此处是否需要释放资源 */
} catch (ParserException e) {
log.error(e.getMessage());
throw new Exception("login On Failture --->" + url);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
现在不习惯用htmlparser了
都是直接分割字符串
哈哈
不用释放资源.. 不过要parser.reset(),这个比较麻烦
这还不简单,你看看htmlparser源码不就行了,我以前也用过,没有自己释放资源,应该htmlparser自动就处理了,他把网页读成字符串后,肯定就关闭了流.
各位高高手,给指点指点啊!
感谢回复.用seturl好象性能上会差一些,这一点我再做优化.parser解析的的确是String.但应该是把String 读进字符流进行解析吧.public class Stream extends InputStream implements Runnable{}.这是源码里的一个类.
Parser parser = Parser.createParser(body, "UTF-8");
解析的是String,而不是inputstream!可以去查看Parser的源码,
如果用setURL,来抓网页数据,性能会差一些吧!
即使你用HttpClient来抓取数据,不还得是用parser来解析吗?那解析后呢?解析应该是用inputstream来做的。所以我才会怀疑需要有个close的过程。
其实一般解析HTML内容,看具体页面的大小,跑到 140M 也算正常,只要不再涨得太离谱就行了~~
没这么用过~~倒是用过HttpClient来抓数据,HTMLParser来解析抓来的Html内容~~~