- 浏览: 118954 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
niezhihong:
Java代码 Contact selContact = (C ...
liferay 日历使用 -
释皇天:
<script language="javas ...
js获得当前日期和昨天日期 -
释皇天:
火狐下可以不???貌似不可以。
js获得当前日期和昨天日期 -
plj123:
今天遇到这个问题了,用outerHTML会报未知运行时错误。 ...
js删除tr -
javaray:
遨豪(大连)科技有限公司自2007年与Liferay,Inc合 ...
liferay 中的经常使用的
/* * 测试对<table><tr><td></td></tr></table>的解析 */ public void testTable() { Parser myParser; NodeList nodeList = null; myParser = Parser.createParser("<body> " + "<table id=’table1′ >" + "<tr><td>1-11</td><td>1-12</td><td>1-13</td>" + "<tr><td>1-21</td><td>1-22</td><td>1-23</td>" + "<tr><td>1-31</td><td>1-32</td><td>1-33</td></table>" + "<table id=’table2′ >" + "<tr><td>2-11</td><td>2-12</td><td>2-13</td>" + "<tr><td>2-21</td><td>2-22</td><td>2-23</td>" + "<tr><td>2-31</td><td>2-32</td><td>2-33</td></table>" + "</body>", "GBK"); NodeFilter tableFilter = new NodeClassFilter(TableTag.class); OrFilter lastFilter = new OrFilter(); lastFilter.setPredicates(new NodeFilter[] { tableFilter }); try { nodeList = myParser.parse(lastFilter); for (int i = 0; i <= nodeList.size(); i++) { if (nodeList.elementAt(i) instanceof TableTag) { TableTag tag = (TableTag) nodeList.elementAt(i); TableRow[] rows = tag.getRows(); for (int j = 0; j < rows.length; j++) { TableRow tr = (TableRow) rows[j]; TableColumn[] td = tr.getColumns(); for (int k = 0; k < td.length; k++) { logger.fatal("<td>" + td[k].toPlainTextString()); } } } } } catch (ParserException e) { e.printStackTrace(); } } /* * 测试NodeVisitor的用法,遍历所有节点 */ public void testVisitorAll() { try { Parser parser = new Parser(); parser.setURL("http://www.google.com"); parser.setEncoding(parser.getEncoding()); NodeVisitor visitor = new NodeVisitor() { public void visitTag(Tag tag) { logger.fatal("testVisitorAll() Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass()); } }; parser.visitAllNodesWith(visitor); } catch (ParserException e) { e.printStackTrace(); } } /* * 测试对指定Tag的NodeVisitor的用法 */ public void testTagVisitor() { try { Parser parser = new Parser( "<head><title>dddd</title>" + "<link href=http://www.yeeach.com/’/test01/css.css’ text=’text/css’ rel=’stylesheet’ />" + "<link href=http://www.yeeach.com/’/test02/css.css’ text=’text/css’ rel=’stylesheet’ />" + "</head>" + "<body>" + "<a href=http://www.yeeach.com/’http://www.yeeach.com’>yeeach.com</a>" + "</body>"); NodeVisitor visitor = new NodeVisitor() { public void visitTag(Tag tag) { if (tag instanceof HeadTag) { logger.fatal("visitTag() HeadTag : Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass() + "\n Text is :" + tag.getText()); } else if (tag instanceof TitleTag) { logger.fatal("visitTag() TitleTag : Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass() + "\n Text is :" + tag.getText()); } else if (tag instanceof LinkTag) { logger.fatal("visitTag() LinkTag : Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass() + "\n Text is :" + tag.getText() + " \n getAttribute is :" + tag.getAttribute("href")); } else { logger.fatal("visitTag() : Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass() + "\n Text is :" + tag.getText()); } } }; parser.visitAllNodesWith(visitor); } catch (Exception e) { e.printStackTrace(); } } /* * 测试HtmlPage的用法 */ public void testHtmlPage() { String inputHTML = "<html>" + "<head>" + "<title>Welcome to the HTMLParser website</title>" + "</head>" + "<body>" + "Welcome to HTMLParser" + "<table id=’table1′ >" + "<tr><td>1-11</td><td>1-12</td><td>1-13</td>" + "<tr><td>1-21</td><td>1-22</td><td>1-23</td>" + "<tr><td>1-31</td><td>1-32</td><td>1-33</td></table>" + "<table id=’table2′ >" + "<tr><td>2-11</td><td>2-12</td><td>2-13</td>" + "<tr><td>2-21</td><td>2-22</td><td>2-23</td>" + "<tr><td>2-31</td><td>2-32</td><td>2-33</td></table>" + "</body>" + "</html>"; Parser parser = new Parser(); try { parser.setInputHTML(inputHTML); parser.setEncoding(parser.getURL()); HtmlPage page = new HtmlPage(parser); parser.visitAllNodesWith(page); logger.fatal("testHtmlPage -title is :" + page.getTitle()); NodeList list = page.getBody(); for (NodeIterator iterator = list.elements(); iterator .hasMoreNodes();) { Node node = iterator.nextNode(); logger.fatal("testHtmlPage -node is :" + node.toHtml()); } } catch (ParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 测试LinkBean的用法 */ public void testLinkBean() { Parser parser = new Parser(); LinkBean linkBean = new LinkBean(); linkBean.setURL("http://www.google.com"); URL[] urls = linkBean.getLinks(); for (int i = 0; i < urls.length; i++) { URL url = urls[i]; logger.fatal("testLinkBean() -url is :" + url); } } }
引用
另外一种
public class ParserTestCase extends TestCase { private static final Logger logger = Logger.getLogger(ParserTestCase.class); public ParserTestCase(String name) { super(name); } /* * 测试ObjectFindVisitor的用法 */ public void testImageVisitor() { try { ImageTag imgLink; ObjectFindingVisitor visitor = new ObjectFindingVisitor(ImageTag.class); Parser parser = new Parser(); parser.setURL("http://www.google.com"); parser.setEncoding(parser.getEncoding()); parser.visitAllNodesWith(visitor); Node[] nodes = visitor.getTags(); for (int i = 0; i < nodes.length; i++) { imgLink = (ImageTag) nodes[i]; logger.fatal("testImageVisitor() ImageURL = " + imgLink.getImageURL()); logger.fatal("testImageVisitor() ImageLocation = " + imgLink.extractImageLocn()); logger.fatal("testImageVisitor() SRC = " + imgLink.getAttribute("SRC")); } }catch (Exception e) { e.printStackTrace(); } } /* * 测试TagNameFilter用法 */ public void testNodeFilter() { try { NodeFilter filter = new TagNameFilter("IMG"); Parser parser = new Parser(); parser.setURL("http://www.google.com"); parser.setEncoding(parser.getEncoding()); NodeList list = parser.extractAllNodesThatMatch(filter); for (int i = 0; i < list.size(); i++) { logger.fatal("testNodeFilter() " + list.elementAt(i).toHtml()); } } catch (Exception e) { e.printStackTrace(); } } /* * 测试NodeClassFilter用法 */ public void testLinkTag() { try { NodeFilter filter = new NodeClassFilter(LinkTag.class); Parser parser = new Parser(); parser.setURL("http://www.google.com"); parser.setEncoding(parser.getEncoding()); NodeList list = parser.extractAllNodesThatMatch(filter); for (int i = 0; i < list.size(); i++) { LinkTag node = (LinkTag) list.elementAt(i); logger.fatal("testLinkTag() Link is :" + node.extractLink()); } } catch (Exception e) { e.printStackTrace(); } } /* * 测试<link href=" text=’text/css’ rel=’stylesheet’ />用法 */ public void testLinkCSS() { try { Parser parser = new Parser(); parser .setInputHTML("<head><title>Link Test</title>" + "<link href=http://www.yeeach.com/’/test01/css.css’ text=’text/css’ rel=’stylesheet’ />" + "<link href=http://www.yeeach.com/’/test02/css.css’ text=’text/css’ rel=’stylesheet’ />" + "</head>" + "<body>"); parser.setEncoding(parser.getEncoding()); NodeList nodeList = null; for (NodeIterator e = parser.elements(); e.hasMoreNodes();) { Node node = e.nextNode(); logger.fatal("testLinkCSS()" + node.getText()+ node.getClass()); } } catch (Exception e) { e.printStackTrace(); } } /* * 测试OrFilter的用法 */ public void testOrFilter() { NodeFilter inputFilter = new NodeClassFilter(InputTag.class); NodeFilter selectFilter = new NodeClassFilter(SelectTag.class); Parser myParser; NodeList nodeList = null; try { Parser parser = new Parser(); parser .setInputHTML("<head><title>OrFilter Test</title>" + "<link href=http://www.yeeach.com/’/test01/css.css’ text=’text/css’ rel=’stylesheet’ />" + "<link href=http://www.yeeach.com/’/test02/css.css’ text=’text/css’ rel=’stylesheet’ />" + "</head>" + "<body>" + "<input type=’text’ value=’text1′ name=’text1′/>" + "<input type=’text’ value=’text2′ name=’text2′/>" + "<select><option id=’1′>1</option><option id=’2′>2</option><option id=’3′></option></select>" + "<a href=http://www.yeeach.com/’http://www.yeeach.com’>yeeach.com</a>" + "</body>"); parser.setEncoding(parser.getEncoding()); OrFilter lastFilter = new OrFilter(); lastFilter.setPredicates(new NodeFilter[] { selectFilter, inputFilter }); nodeList = parser.parse(lastFilter); for (int i = 0; i <= nodeList.size(); i++) { if (nodeList.elementAt(i) instanceof InputTag) { InputTag tag = (InputTag) nodeList.elementAt(i); logger.fatal("OrFilter tag name is :" + tag.getTagName() + " ,tag value is:" + tag.getAttribute("value")); } if (nodeList.elementAt(i) instanceof SelectTag) { SelectTag tag = (SelectTag) nodeList.elementAt(i); NodeList list = tag.getChildren(); for (int j = 0; j < list.size(); j++) { OptionTag option = (OptionTag) list.elementAt(j); logger .fatal("OrFilter Option" + option.getOptionText()); } } } } catch (ParserException e) { e.printStackTrace(); } } }
发表评论
-
spring boot使用遇到的问题
2018-02-09 16:43 0@RestController 和@Controller 使 ... -
jdk local_policy与US_export_policy.jar
2016-07-13 11:38 1304jdk local_policy与US_export_poli ... -
Quartz定时器表达式
2016-07-06 10:36 481Cron 表达式包括以下 7 个字段: 秒,分,小 ... -
zookeeper
2016-07-04 17:24 406Zookeeper 学习笔记 概述 Zookeeper 从 ... -
maven compile not fount tools.jar
2013-06-13 13:11 3820Maven – Fatal error compiling: ... -
spring2.5源码编译
2013-03-28 10:41 1067使用maven 下载编译spring源码需要的jar包,里面有 ... -
linux
2012-11-27 11:01 682linux JDK 下载:http://www.oracle. ... -
java读xml
2011-10-14 10:35 1067package dmx.ams.util; import ... -
java zip工具类
2011-09-27 15:03 1038package com.dmx.recmanager.ac ... -
字符转ASCII码
2011-04-08 16:16 1104public class T { public stati ... -
时间相减
2011-03-15 21:35 1085package test; import java.te ... -
AJAXRPC
2010-11-11 14:13 826javascript 需要调用服务器端方法时使用 -
进制转换
2010-10-08 11:48 0package com.bee.urm; publi ... -
进制转换
2010-07-19 11:30 813转十六进制 public static void mai ... -
BigDecimal处理数字 “加减”
2010-02-02 14:08 1401BigDecimal a = new BigDecimal ... -
javaMail发送邮件
2009-11-16 17:27 776需要在web-inf/lib/下加上javaMail.jar -
java输出重复的字符和个数
2009-11-09 17:43 0import java.util.*; /* * @fu ... -
任意格式转换为json
2009-10-17 12:07 1325引用转载收藏 import java.beans.Intros ... -
action 返回 xml格式
2009-10-17 11:46 1294import org.dom4j.Document; imp ... -
分页page
2009-09-29 14:19 0<%@ page language="java ...
相关推荐
标题提到的"html parser 应用ie的内置parser可以解析动态脚本html",意味着我们将讨论如何利用MSHTML库,这个库是Internet Explorer的核心组件,支持HTML、CSS、JavaScript等网页技术,因此能够处理包含动态脚本的...
在“HTML parser选型测试”这个主题中,博主可能分享了他在选择适合项目需求的HTML解析器时的经验和测试结果。在源码和工具的标签下,我们可以推测这篇博文可能涉及到了代码实现和实际应用工具的比较。 首先,HTML...
**jericho HTML Parser** 是一个Java库,专门用于解析HTML文档。它被设计用来处理不规范的HTML,即那些在语法上可能不完全符合HTML标准的实际网页。在处理这种复杂性和不可预测性方面,jericho HTML Parser表现出了...
"Android HTML Parser" 是一个专为Android平台设计的库,它允许开发者高效地解析和提取HTML文档中的信息。这个库的存在使得在手机上分析网页内容变得更为简便,能够帮助开发者快速定位到他们感兴趣的元素。 HTML ...
Python HTML Parser是一个强大的工具,用于在Python环境中解析HTML和XML文档。这个库使得开发者能够方便地提取和操作网页上的数据,特别是在进行网络爬虫或数据挖掘项目时非常有用。本篇将详细介绍Python中的...
`HTML-Parser`是Perl中一个专门用于解析HTML的模块,它使得程序员能够有效地解析和操作HTML文档。 标题中的"HTML-Parser-3.51.rar"表明这是一个关于HTML-Parser 3.51版本的压缩包,通常包含了该模块的源代码、文档...
在给定的"html_parser.zip"压缩包中,我们可以推测包含了一个使用Delphi7或Delphi XE2编写的HTML解析库或者示例代码。Delphi是一种强大的Object Pascal编程环境,常用于开发Windows应用程序。 HTML解析器的核心功能...
本压缩包"html_parser.rar"包含了一个用Delphi语言编写的HTML解析器,它利用了汇编内联技术来提高性能。Delphi是一种基于Object Pascal的高效能、面向对象的编程语言,常用于开发Windows桌面应用。 在解析HTML时,...
HTML解析器是用于处理HTML(超文本标记语言)文档的工具,它能够解析网页内容,提取其中的结构、数据和元信息。在编程领域,HTML解析通常涉及到编程语言中的库或框架,例如Java中的Jsoup或者XML解析库。本文将深入...
Jericho Html Parser 是一个在 SourceForge 上非常受欢迎的开源HTML解析库,专为处理复杂的HTML文档设计。这个库因其高效和强大的解析能力而备受推崇,尤其是在处理非结构化或不规则的网页时。本文将深入探讨如何...
org.htmlparser.Parser org.htmlparser.Remark org.htmlparser.tags.Div org.htmlparser.Attribute org.htmlparser.tags.Html org.htmlparser.tags.Span org.htmlparser.NodeFilter org.htmlparser.lexer.Page org....
PHP HTML parser是一款开源的PHP库,专为解析HTML文档而设计。这个解析器使得开发者能够从PHP脚本中高效地处理和操作HTML内容,从而实现网页抓取、数据提取或者DOM操作等各种功能。本文将深入探讨这款解析器的关键...
THTMLdom是(Delphi)类,具有读取HTML源文件并将其分解为THTMLelement树的功能。 HTML标签的属性存储在元素中。 提供了用于根据属性值或标签名称选择元素的功能。 可以显示树的结构,并且可以将其呈现为纯文本。 ...
** Jericho HTML Parser 简介 ** Jericho HTML Parser 是一个专为Java开发者设计的开源库,主要用于解析和操作HTML文档。这个库的核心特性在于它能够处理不规范的HTML,即使遇到错误或非标准的标记,也能尽可能地...
《Kanna:Swift中的XML与HTML解析库》 在Swift编程语言中,处理XML和HTML文档是一项常见的任务,尤其在构建iOS、macOS应用程序时,可能需要从网页中提取数据或者解析XML格式的数据源。Kanna,这个源自日本古老神话...
一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用。