htmlparser解析网页代码实现网站自动抓取新闻并定时更新
参加工作快有两年了,一直都是从网上谷歌人家的经验,这次也把自己的开发经验写下来与别人分享下。刚不久,换了一份新工作,新的公司在刚结束了一个网站。网站的新闻内容都是自己编辑添加上去的,全手动的,于是接受任务,做个自动更新新闻内容的功能。
开始整理思路,第一步通过网站URL得到整个网站新闻链接所有的URL,第二步把得到的URL返回它的源代码,第三步解析出源代码里的内容和标题,第四步存入数据库。最后使用java定时器定时自动更新。
过程中最棘手的是解析HTML源码,果断决定使用htmlparser,废话少说,上一部分代码。代码部分注释,写的不好,还请指教。
/* * 返回新闻内容 */public static String getContent(String urlpath){Parser parser = new Parser();String content = "";try {parser.setResource(urlpath);//传入urlNodeFilter divFilter = new NodeClassFilter(Div.class);//自定义过滤器NodeList divlist = parser.parse(divFilter);//加载过滤器for(int i=0;i<divlist.size();i++){Node node = divlist.elementAt(i);//遍历所有div标签if (node.getText().toString().equals("div id='zoom'")){content = node.toPlainTextString();//得到指定div内容};}} catch (ParserException e) {// TODO Auto-generated catch blocke.printStackTrace();}return content;}}/* *返回新闻title * */public static String getTitle(String urlpath)throws Exception{Parser parser = new Parser();parser.setResource(urlpath);parser.setEncoding("gbk");NodeFilter titleFilter = new NodeClassFilter(TitleTag.class);NodeList titleList = parser.parse(titleFilter);String title = "";for (int i = 0; i < titleList.size(); i++) {Node node = titleList.elementAt(i);if (node instanceof TitleTag) {TitleTag titleTage = (TitleTag) node;title = titleTage.getStringText();}}return title;}