htmlparser使用举例
HTMLParser一个解析web页面的开源类库,他有两种主要使用方式,extraction和transformation.前者就是从网页中萃取出你要的东西,后者就是把web页面中的一些内容改为(转换为)你想要的格式.下面来看看这两种使用情况的各自特点.
Extraction
萃取例如下面的几种常见的使用方式:
*textextraction,萃取web页面中的文本文字
*linkextraction,萃取web页面中的连接包括url和email地址,还可以自定义其他标签
*screenscraping,抓去web页面内容
*resourceextraction,萃取web页面中的资源,图片,声音文件......
*abrowserfrontend,thepreliminarystageofpagedisplay
*linkchecking,确保连接是有效的
*sitemonitoring,检查web页面的更改
使用一下几种机制来帮助你实现上面的功能:
filters,visitorsandJavaBeans
Transformation
处理web页面的内容,转换为你需要的.包含:
*URLrewriting,更改一个web页面的部分连接or全部连接为你想要的.
*sitecapture,把远程的网站抓取到本地
*censorship,检查web页面内容,移出你不想要的字词
*HTMLcleanup,整理html格式,
*adremoval,过滤广告连接
*conversiontoXML,转换为xml格式的数据
另外:htmlparser还使用到了几种很好的设计模式.应用的恰到好处,值得学习和借鉴一下.
这次对htmlparser的简单介绍先介绍到这里,在以后的时间里根据具体的应用在写一些例子,给大家参考一下(htmlparser源代码中也有几个例子,建议看看).
下面通过一个简单的htmlparser的使用举例,来学习htmlparser的使用。代码如下:
packagecom.amigo.htmlparser;
importjava.io.*;
importjava.net.URL;
importjava.net.URLConnection;
importorg.htmlparser.filters.*;
importorg.htmlparser.*;
importorg.htmlparser.nodes.*;
importorg.htmlparser.tags.*;
importorg.htmlparser.util.*;
importorg.htmlparser.visitors.*;
/***//**
*测试HTMLParser的使用.
*@author<ahref="liuqlmailto:liuql-ja@163.com">liuql</a>
*Creationdate:2008-6-5-上午11:44:22
*/
publicclassHTMLParserTest{
/***//**
*入口方法.
*@paramargs
*@throwsException
*/
publicstaticvoidmain(Stringargs[])throwsException{
Stringpath="http://www.163.com";
URLurl=newURL(path);
URLConnectionconn=url.openConnection();
conn.setDoOutput(true);
InputStreaminputStream=conn.getInputStream();
InputStreamReaderisr=newInputStreamReader(inputStream,"utf8");
StringBuffersb=newStringBuffer();
BufferedReaderin=newBufferedReader(isr);
StringinputLine;
while((inputLine=in.readLine())!=null){
sb.append(inputLine);
sb.append("\n");
}
Stringresult=sb.toString();
readByHtml(result);
readTextAndLinkAndTitle(result);
}
/***//**
*按页面方式处理.解析标准的html页面
*@paramcontent网页的内容
*@throwsException
*/
publicstaticvoidreadByHtml(Stringcontent)throwsException{
ParsermyParser;
myParser=Parser.createParser(content,"utf8");
HtmlPagevisitor=newHtmlPage(myParser);
myParser.visitAllNodesWith(visitor);
StringtextInPage=visitor.getTitle();
System.out.println(textInPage);
NodeListnodelist;
nodelist=visitor.getBody();
System.out.print(nodelist.asString().trim());
}
/***//**
*分别读纯文本和链接.
*@paramresult网页的内容
*@throwsException
*/
publicstaticvoidreadTextAndLinkAndTitle(Stringresult)throwsException{
Parserparser;
NodeListnodelist;
parser=Parser.createParser(result,"utf8");
NodeFiltertextFilter=newNodeClassFilter(TextNode.class);
NodeFilterlinkFilter=newNodeClassFilter(LinkTag.class);
NodeFiltertitleFilter=newNodeClassFilter(TitleTag.class);
OrFilterlastFilter=newOrFilter();
lastFilter.setPredicates(newNodeFilter[]{textFilter,linkFilter,titleFilter});
nodelist=parser.parse(lastFilter);
Node[]nodes=nodelist.toNodeArray();
Stringline="";
for(inti=0;i<nodes.length;i++){
Nodenode=nodes;
if(nodeinstanceofTextNode){
TextNodetextnode=(TextNode)node;
line=textnode.getText();
}elseif(nodeinstanceofLinkTag){
LinkTaglink=(LinkTag)node;
line=link.getLink();
}elseif(nodeinstanceofTitleTag){
TitleTagtitlenode=(TitleTag)node;
line=titlenode.getTitle();
}
if(isTrimEmpty(line))
continue;
System.out.println(line);
}
}
/***//**
*去掉左右空格后字符串是否为空
*/
publicstaticbooleanisTrimEmpty(Stringastr){
if((null==astr)||(astr.length()==0)){
returntrue;
}
if(isBlank(astr.trim())){
returntrue;
}
returnfalse;
}
/***//**
*字符串是否为空:null或者长度为0.
*/
publicstaticbooleanisBlank(Stringastr){
if((null==astr)||(astr.length()==0)){
returntrue;
}else{
returnfalse;
}
}
}
分享到:
相关推荐
基于java的开发源码-HTML文档解析器 HTMLParser.zip 基于java的开发源码-HTML文档解析器 HTMLParser.zip 基于java的开发源码-HTML文档解析器 HTMLParser.zip 基于java的开发源码-HTML文档解析器 HTMLParser.zip 基于...
commons系列 ezmorph-1.0.4 filterbuilder json-lib-2.4-jdk15 htmlparser
前端开源库-parse5-htmlparser2-tree-adapterparse5-htmlparser2-tree-adapter,parse5的htmlparser2树适配器。
基于Java的源码-HTML文档解析器 HTMLParser.zip
基于Java的实例源码-HTML文档解析器 HTMLParser.zip
基于Java的实例开发源码-HTML文档解析器 HTMLParser.zip
node-htmlparser ,node-htmlparser 是一个 JavaScript 的 HTML 文档解析器。 示例代码:...
网络爬虫 HTMLParser 使用指南 , 非常适合做网络抓取资源的开发者,经典之作
网络爬虫HTMLParser使用举例,实际例子让你轻松掌握HTMLParser
使用 HttpClient 和 HtmlParser 实现简易网络爬虫
Java使用HtmlParser抓取网页数据并解析
基于HTMLParser 信息提取的网络爬虫设计论文
博客文章中有详细使用示范http://blog.csdn.net/ccnyou/article/details/7922026 一个可以在xcode中使用的HTML分析器
使用htmlparser制作的网页爬虫例题
Java使用HtmlParser实现简单的网络爬虫,爬虫DEMO,Java 使用 HtmlParser 抓取网页数据并解析以及说明
htmlparser-1.2.1jar包下载htmlparser-1.2.1jar包下载
对html进行转换,适用爬虫/小程序富文本显示等;对html进行转换,适用爬虫/小程序富文本显示等对html进行转换,适用爬虫/小程序富文本显示等对html进行转换,适用爬虫/小程序富文本显示等
commons-beanutils-1.8.3 commons -codec-1.6 commons -collections-3.2.1 commons- lang-2.5.jar commons- longging-1.13.jar4.3.3.jar ezmorph-1.0.6.jar fluent-hc-4.3.3.jar gson-2.2.4.jar ...
用htmlparser写的抓取指定网站的数据,是一个小例子,自己拿去封装,直接运行FundTableBean.java就能看到抓来的信息在控制台打应了
版本为2.1,请大家明确,包含和htmlparser相关的开发包,其中htmllexer-2.1-sources.jar、htmlparser-2.1-sources.jar为源码为对应包名的源码,大家可以参考。