- 浏览: 1526987 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
HTMLParser的两种使用方法
因为论文的关系,要 用到HTMLParser这个项目(使用的HTMLParser版本是1.6) 一,数据组织分析:
HtmlParser主要靠Node、AbstractNode和Tag来表达Html,因为Remark和Text相对简单, 此处就将其忽略了。
Node分成三类:
二,Visitor方式访问Html:
1,整体解析过程
2,Visit过程
3,获取节点的过程:逐步遍历Html,分析出Node。此部分较为复杂,且对于我们应用来说无需很多
了解,暂跳过。
4,节点访问
节点访问采用Visitor模式,Node的accept方法和具体Visitor的visit方法是
关键。
首先三类Node来accept的方式各不相同:
系统为我们实现了下面我要介绍的8种Visitor,实际上可以看作是系统给我们演示了如何做各种各样
的Visitor来访问Html,因为实际上我们要真正来用HtmlParser的话,还需要特定的Visitor,而通过简单的这
些系统提供的Visitor组合是难以做成什么事情的。
三,系统Visitor功能简介:
四,Filter
如果说visitor是遍历提取信息,当然这个信息可以包括某些节点或者从节点分析出来的更有效的信息,这都取决
于我们的Visitor做成什么样子,那么Filter则目标很明确,就是用来提取节点的。所以说要想用HtmlParser,首先要熟悉上面讲到的数据
组织。
系统定义了17种具体的Filter,包括依据节点父子关系的Filter,连接Filter组合的
Filter,依据网页内容匹配情况的filter,等等。我们也可以implement Filter来做自己的Filter来提取节点。
Filter的调用是同Visitor独立的,因为也无需先filter出一些NodeList,再用
Visitor来访问。调用Filter的方法是:
NodeList nodeList = myParser.parse(someFilter);
解析之后,我们可以采用:
Node[] nodes = nodeList.toNodeArray();
来获取节点数组,也可以直接访问:
Node node = nodeList.elementAt(i)来获取Node。
另外,在Filter后得到NodeList以后,我们仍然可以使用NodeList的
extractAllNodesThatMatch(someFilter)来进一步过滤,同时又可以用NodeList的
isitAllNodesWith(someVisitor)来做进一步的访问。
这样,我们可以看到HtmlParser为我们提供了非常方便的Html解析方式,针对不同的应用可以采用
visitor来遍历Html节点提取数据,也可以用Filter来过滤节点,提取出我们所关注的节点,再对节点进行处理。通过这样的组合,一定能够找出
我们所需要的信息。
我的代码
package
com.eric.Html.htmlparser;
import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.AndFilter; import org.htmlparser.filters.HasAttributeFilter; import org.htmlparser.filters.HasChildFilter; import org.htmlparser.filters.TagNameFilter; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; import org.htmlparser.visitors.TextExtractingVisitor; /** */ /** * @author 作者 Eric yang E-mail:yjboy1982@126.com * @version 创建时间:2007-7-16 下午02:49:55 * 类说明 */ public class AstroExtractorTest ... { /** */ /** * @param args * @throws ParserException */ public static void main(String[] args) throws ParserException ... { // TODO Auto-generated method stub String title ; String constellation ; String body ; String summary ; Parser parser = new Parser( " http://astro.sina.com.cn/sagittarius.html " ); parser.setEncoding( " GB2312 " ) ; NodeFilter filter_constellation_summart = new AndFilter(( new TagNameFilter( " td " )),( new HasChildFilter( new TagNameFilter( " b " )))) ; NodeFilter filter_title = new AndFilter( new TagNameFilter( " font " ), new HasAttributeFilter( " class " , " f1491 " )) ; NodeFilter filter_body = new AndFilter( new TagNameFilter( " td " ), new HasAttributeFilter( " width " , " 30% " )) ; NodeList nodelist = parser.parse(filter_constellation_summart) ; Node node_constellation = nodelist.elementAt( 0 ) ; constellation = node_constellation.getFirstChild().getNextSibling().toHtml() ; Node node_summary = nodelist.elementAt( 1 ) ; NodeList summary_nodelist = node_summary.getChildren() ; summary = summary_nodelist.elementAt( 3 ).toHtml() + summary_nodelist.elementAt( 5 ).toHtml() ; parser.reset() ; nodelist = parser.parse(filter_title) ; Node node_title = nodelist.elementAt( 0 ) ; title = node_title.getNextSibling().getNextSibling().toHtml() ; // title = node_title.getNextSibling().getNextSibling().toHtml() ; parser.reset() ; nodelist = parser.parse(filter_body) ; Node node_body = nodelist.elementAt( 0 ) ; Parser body_parser = new Parser(node_body.toHtml()) ; TextExtractingVisitor visitor = new TextExtractingVisitor() ; body_parser.visitAllNodesWith(visitor) ; body = visitor.getExtractedText() ; // System.out.println(node_summary.getChildren().toHtml()) ; // System.out.println(node_body.toHtml()) ; // System.out.println(title.trim()) ; // System.out.println(constellation.trim()) ; // System.out.println(body.trim()) ; System.out.println(summary.trim()) ; } } |
发表评论
-
htmlunit 示例
2010-08-20 18:40 4350先下载依赖的相关JAR包:http://sourcefor ... -
HtmlCleanner结合xpath用法
2010-04-15 13:24 3573文章分类:Java编程 ... -
基于Htmlparser的天气预报程序(续)
2010-04-14 13:53 1100zz:http://www.iteye.com/topic/6 ... -
httpclient(校内网)
2010-04-13 15:10 1317Java code <!-- C ... -
httpclient(校内网)
2010-04-13 15:10 1437httpclient(校内网),大家帮忙看看我的 http ... -
HTTPClient模拟登陆人人网
2010-04-13 14:58 1914zz: 目的: http://www.iteye. ... -
HtmlCleaner API
2010-04-13 13:40 4522HtmlCleaner API Create cleaner ... -
htmlcleaner惯用法
2010-04-13 13:39 1465Common usage Tipically the f ... -
htmlcleaner惯用法
2010-04-13 13:39 1540Common usage Tipically t ... -
htmlcleaner 使用示例.
2010-04-13 13:10 10053原文出处:http://blog.chenlb.com/200 ... -
http://htmlparser.com.cn/
2010-04-12 16:20 1064http://htmlparser.com.cn/ ... -
开源网络蜘蛛spider(转载)
2010-04-12 15:42 1347spider是搜索引擎的必须 ... -
基于Spindle的增强HTTP Spider
2010-04-12 15:33 1489zz:http://www.iteye.com/news ... -
Cobra: Java HTML 解析器
2010-04-12 15:32 2966Cobra 简介: Cobra是一个 ... -
用htmlparser分析并抽取正文
2010-04-12 15:26 1562我这次要介绍的是如何抽取正文,这部分是最为核心的.因为如果不能 ... -
HtmlParser初步研究
2010-04-12 15:18 940目的是快速入手,而不 ... -
基于Htmlparser的天气预报程序
2010-04-12 15:16 1084htmlparser是一个纯的java写的html解析的库,它 ...
相关推荐
它有两种主要使用方式:extraction 和 transformation。前者用于从网页中萃取出需要的内容,后者用于把 Web 页面中的内容转换为需要的格式。 Extraction(萃取)是一种常见的使用方式,例如: * 文本萃取:从网页...
HTMLParser提供了两种主要的解析方式:事件驱动和DOM(Document Object Model)模型。这两个jar包——htmlparser.jar和htmllexer.jar,包含了实现这些功能所需的类和方法。 htmlparser.jar是核心库,它包含了...
在HTMLParser中设置页面编码的方式有两种:一种是使用Lexer,另一种是使用静态方法createParser。由于Lexer是一个高级功能,对于大多数中文页面来说,常用的方法是使用静态方法createParser来设置编码。 6. 示例...
开发者可以打开`AnalyzeHtml.sln`,编译并运行这两个项目,以了解HtmlParser的具体使用方法和实际效果。 四、应用实例 HtmlParser在多种场景下都有广泛的应用: 1. **数据抓取**:从网页中抓取特定信息,如产品...
它提供了线性和嵌套两种解析模式,便于进行网页转换和内容抽取。HtmlParser的特点包括过滤器、访问者模式、处理自定义标签以及使用JavaBeans的便利性。这个库被设计得既快速又健壮,适用于处理互联网上的实际网页。...
HtmlParser提供了两种主要的解析器模式:`SAX-like`(类似SAX的)和`DOM-like`(类似DOM的)。SAX-like模式逐个事件处理,适合处理大型文档,内存占用低;DOM-like模式则将整个HTML结构加载到内存中,便于遍历和...
HTMLParser是一款强大的库,用于解析HTML文档,它提供了C#和Java两种编程语言的实现,使得开发者在处理HTML内容时有了更多的灵活性。本文将深入探讨HTMLParser的核心功能、使用场景、以及如何在C#和Java中集成和使用...
HTMLParser提供了三种主要的操作方式来处理HTML内容: 1. **事件驱动解析**:通过注册事件处理器,当HTML解析器遇到特定的HTML标签或元素时,会触发相应的事件。例如,当解析到`<div>`标签时,可以调用预先定义的...
该篇文章主要介绍了用C#实现HtmlParser的两种方法,分别是使用System.Net.WebClient下载网页并使用正则表达式来分析Html内容,以及使用Winista.Htmlparser.Net解析Html。下面我们将详细介绍这两种方法。 第一种方法...
标题中的“电信设备-一种基于HERITRIX和HTMLPARSER商品信息提取方法”指的是在电信设备领域,利用HERITRIX和HTMLPARSER这两个工具来提取网络上的商品信息。HERITRIX是一个开源的网络爬虫软件,用于抓取互联网上的...
HtmlParser提供了两种解析模式:SAX(简单API for XML)和DOM。SAX模式适合处理大文件,因为它不需要一次性加载整个文档;DOM模式则更直观,允许开发者通过遍历树形结构来查找元素。对于简单的爬虫,DOM模式可能更为...
在`parse5-master`这个压缩包中,很可能包含了parse5库的源码和相关资源,你可以通过阅读源码、查看示例和文档来更深入地理解这个库的工作原理,以及如何有效地使用`parse5-htmlparser2-tree-adapter`。同时,熟悉这...
Tag分为两种类型:CompositeTag和简单Tag。CompositeTag可以包含其他Tag,例如BodyTag、Div、FrameSetTag等,它们代表可以嵌套其他元素的HTML标签。简单Tag则不能包含其他Tag,如BaseHrefTag、DoctypeTag、FrameTag...
下面将详细探讨HtmlParser的主要功能和使用方法,以及与之相关的技术。 首先,HtmlParser的核心功能是解析HTML文档。HTML是一种标记语言,用于创建网页内容,但它的非结构化特性使得直接处理起来较为复杂。...
2. **解析过程**:HTMLParser的工作原理通常包括两个主要步骤:词法分析和语法分析。词法分析将HTML源代码拆分为一系列的令牌(tokens),如标签、属性、文本等。语法分析则根据HTML语法规则将这些令牌构建为DOM...
- 提供了两种解析模式:线性和嵌套。 - 支持HTML文档的转换和内容抽取。 - 内置过滤器(Filter)和访问者模式(Visitor),便于用户根据需求定制解析逻辑。 - 能够处理各种非标准的HTML代码,提高了兼容性和鲁棒性。 - ...
HTMLPARSER和HTTPCLIENT是两种常用的工具,常用于制作网络爬虫。HTMLPARSER是一个Java库,用于解析HTML文档,而HTTPCLIENT则是一个用于执行HTTP请求的库,这两个工具结合使用,可以有效地抓取和处理网页数据。 首先...