- 浏览: 463233 次
- 性别:
- 来自: 长沙
-
文章分类
最新评论
-
baijiazi521:
报压缩损坏的解决方案!!!!!!!!!!!!是因为默认的第二个 ...
web services cxf 视频教程 -
李涤尘:
写得太好了。必须顶一个
oracle触发器使用 -
359126613:
你要是在s:Panel 加上title他也不会显示。。。
flex4 创建右键菜单的bug -
BenBen_1989:
[url]web services cxf 视频教程[/url ...
web services cxf 视频教程 -
tengyue5i5j:
楼主帮看下 关于jaxb的两个压缩包都下了 就是解压缺少文件 ...
web services cxf 视频教程
上接 1
else if (node instanceof TextNode) {
stringText = node.toPlainTextString();
if ( "" .equals( title ))
continue ;
stringText = stringText.replaceAll( "[ \t\n\f\r ]+" , " " );
stringText = TextHtml.html2text (stringText.trim());
if (! "" .equals(stringText)) {
body .append(stringText);
body .append( " " );
}
} else if (node instanceof TagNode) {
TagNode tagNode = (TagNode) node;
String name = ((TagNode) node).getTagName();
if (name.equals( "TITLE" ) && !tagNode.isEndTag()) {
node = lexer.nextNode();
stringText = node.toPlainTextString().trim();
if (! "" .equals(stringText)) {
title = stringText;
}
} else if (name.equals( "META" )) {
String contentCharSet = tagNode.getAttribute( "CONTENT" );
// System.out.println("contentCharset="+contentCharSet);
int b = contentCharSet.toLowerCase().indexOf( "charset" );
if (b > -1) {
String newCharSet = getCharset (contentCharSet);
// System.out.println("newCharSet=" + newCharSet);
if (!charSet.equals(newCharSet)) {
tryAgain = true ;
charSet = newCharSet;
// System.out.println("charSet=" + charSet);
// System.out.println("newCharSet=" + newCharSet);
break ;
}
}
}
}
}
/** 如果在 Meta 信息中检测到新的字符编码,则需要按照 meta 信息中的编码再次解析网页。 **/
if (tryAgain) {
body = new StringBuffer();
try {
uc = (HttpURLConnection) uc.getURL().openConnection();
lexer = new Lexer( new Page(uc.getInputStream(), charSet));
} catch (Exception e) {
e.printStackTrace();
}
lexer.setNodeFactory( new PrototypicalNodeFactory());
while ( null != (node = lexer.nextNode())) {
if (node instanceof TextNode) {
stringText = node.toPlainTextString();
if ( "" .equals( title ))
continue ;
stringText = stringText.replaceAll( "[ \t\n\f\r ]+" , " " );
stringText = TextHtml.html2text (stringText.trim());
if (! "" .equals(stringText)) {
body .append(stringText);
body .append( " " );
}
}
}
}
}
/**
* 找出最终的网页编码
* @param name 经过 getCharset 方法处理后 meta 标签的值
* @param _default 默认的编码集
* @return
*/
public static String findCharset(String name, String _default) {
String ret;
try {
Class<java.nio.charset.Charset> cls;
Method method;
Object object;
cls = java.nio.charset.Charset. class ;
method = cls.getMethod( "forName" , new Class[] { String. class });
object = method.invoke( null , new Object[] { name });
method = cls.getMethod( "name" , new Class[] {});
object = method.invoke(object, new Object[] {});
ret = (String) object;
} catch (NoSuchMethodException nsme) {
ret = name;
} catch (IllegalAccessException ia) {
ret = name;
} catch (InvocationTargetException ita) {
ret = _default;
System. out
.println( "unable to determine cannonical charset name for "
+ name + " - using " + _default);
}
return (ret);
}
未完,接3
else if (node instanceof TextNode) {
stringText = node.toPlainTextString();
if ( "" .equals( title ))
continue ;
stringText = stringText.replaceAll( "[ \t\n\f\r ]+" , " " );
stringText = TextHtml.html2text (stringText.trim());
if (! "" .equals(stringText)) {
body .append(stringText);
body .append( " " );
}
} else if (node instanceof TagNode) {
TagNode tagNode = (TagNode) node;
String name = ((TagNode) node).getTagName();
if (name.equals( "TITLE" ) && !tagNode.isEndTag()) {
node = lexer.nextNode();
stringText = node.toPlainTextString().trim();
if (! "" .equals(stringText)) {
title = stringText;
}
} else if (name.equals( "META" )) {
String contentCharSet = tagNode.getAttribute( "CONTENT" );
// System.out.println("contentCharset="+contentCharSet);
int b = contentCharSet.toLowerCase().indexOf( "charset" );
if (b > -1) {
String newCharSet = getCharset (contentCharSet);
// System.out.println("newCharSet=" + newCharSet);
if (!charSet.equals(newCharSet)) {
tryAgain = true ;
charSet = newCharSet;
// System.out.println("charSet=" + charSet);
// System.out.println("newCharSet=" + newCharSet);
break ;
}
}
}
}
}
/** 如果在 Meta 信息中检测到新的字符编码,则需要按照 meta 信息中的编码再次解析网页。 **/
if (tryAgain) {
body = new StringBuffer();
try {
uc = (HttpURLConnection) uc.getURL().openConnection();
lexer = new Lexer( new Page(uc.getInputStream(), charSet));
} catch (Exception e) {
e.printStackTrace();
}
lexer.setNodeFactory( new PrototypicalNodeFactory());
while ( null != (node = lexer.nextNode())) {
if (node instanceof TextNode) {
stringText = node.toPlainTextString();
if ( "" .equals( title ))
continue ;
stringText = stringText.replaceAll( "[ \t\n\f\r ]+" , " " );
stringText = TextHtml.html2text (stringText.trim());
if (! "" .equals(stringText)) {
body .append(stringText);
body .append( " " );
}
}
}
}
}
/**
* 找出最终的网页编码
* @param name 经过 getCharset 方法处理后 meta 标签的值
* @param _default 默认的编码集
* @return
*/
public static String findCharset(String name, String _default) {
String ret;
try {
Class<java.nio.charset.Charset> cls;
Method method;
Object object;
cls = java.nio.charset.Charset. class ;
method = cls.getMethod( "forName" , new Class[] { String. class });
object = method.invoke( null , new Object[] { name });
method = cls.getMethod( "name" , new Class[] {});
object = method.invoke(object, new Object[] {});
ret = (String) object;
} catch (NoSuchMethodException nsme) {
ret = name;
} catch (IllegalAccessException ia) {
ret = name;
} catch (InvocationTargetException ita) {
ret = _default;
System. out
.println( "unable to determine cannonical charset name for "
+ name + " - using " + _default);
}
return (ret);
}
未完,接3
发表评论
-
java实现ftp上传和删除
2010-12-27 16:02 1775package com.tw.ftp; import j ... -
深入jvm学习(1)--体系结构
2010-12-25 17:12 1239第一章 一:Java的体系结构: 1:java程序 ... -
java 序列化了解
2010-08-14 11:36 1197上网时有时会经常看到有的博客里面有的java类会实现Seria ... -
java各类pdf
2010-06-12 09:18 16191:java并发编程实例 .pdf 2:设计模式.pdf ... -
Java中各类Cache机制实现解决方案
2010-06-09 09:04 923在Java中,不同的类都有自己单独的Cache机制,实现的方法 ... -
flash 在ie下的缓存处理
2010-03-02 14:49 2217每次在flash里发布了swf,在IE里测试的时候总因为IE缓 ... -
java base64编码和解码案例
2010-03-02 14:34 7619import java.io.IOException; ... -
在 Ajax 应用程序中实现实时数据推送
2010-02-23 14:51 1275全新的高级用户界面(U ... -
tomcat问题解决
2010-02-03 10:37 1271Failed creating java D:\jre6\bi ... -
spring aop资料
2009-11-24 15:38 1198Spring 1.0的标准事务配置 先定义一个baseTxS ... -
从JSP,ASP等动态页面生成静态页面的实现方式
2009-11-21 10:11 1804在网站应用中,为了提高页面的访问速度,经常需要将动态页面静态化 ... -
openfire源码开发学习网站
2009-11-19 17:18 0openfire官方网源码下载http://www.ignit ... -
java领域即时通信的解决方案二(openfire+spark+smack)
2009-11-18 16:29 2740上一篇文章里面提到了penfire+spark的如何搭建. ... -
java领域即时通信的解决方案一(openfire+spark+smack)
2009-11-18 11:03 8559Java领域的即时通信的解决方案可以考虑openfire+sp ... -
hibernate源码下载
2009-11-17 14:36 2726hibernate源码下载.................. ... -
java生成dll工具ikvm.net
2009-11-12 16:30 4346IKVM.NET的是开源的基于.NET CLR 的Java ... -
JSP的执行过程 & Servlet的生命周期
2009-11-09 11:28 1324JSP 的执行过程 (1) 客户端发出Request ... -
接口的总结
2009-10-20 13:43 972接口的总结: 1应为java不支持多重继承,所以有了接口,一个 ... -
企业移动应用平台demo
2009-09-22 17:48 1045企业移动应用平台demo.............. -
java 学习网址
2009-09-13 18:53 0java 安全学习网址 http://snowolf.itey ...
相关推荐
在`parse5-master`这个压缩包中,很可能包含了parse5库的源码和相关资源,你可以通过阅读源码、查看示例和文档来更深入地理解这个库的工作原理,以及如何有效地使用`parse5-htmlparser2-tree-adapter`。同时,熟悉这...
domhandler, htmlparser2作为独立模块的dom domhandler DOM处理程序( 正式称为 DefaultHandler ) 创建一个包含页面所有节点的树。 树可以使用 DOMUtils 库操作。用法var handler = new DomHandler([ &l
htmlparser2 快速而宽容HTML / XML解析器。 安装 npm install htmlparser2 提供htmlparser2的实时演示。 生态系统 名称 描述 快速且宽容HTML / XML解析器 htmlparser2的处理程序,可将文档转换为DOM 使用...
domhandler ...const { Parser } = require ( "htmlparser2" ) ; const { DomHandler } = require ( "domhandler" ) ; const rawHtml = "Xyz [removed]var foo = '<<bar>>';< / script><!--<!-
生态系统姓名描述 快速而宽容HTML / XML解析器 htmlparser2的处理程序,可将文档转换为DOM 使用domhandler的DOM的实用程序CSS选择器引擎,与domhandler的DOM兼容domhandler DOM的jQuery API domhandler DOM的序列化...
本篇文章将深入探讨HTMLParser2中的DOM节点类型,并结合TypeScript的相关特性进行详细说明。 DOM(Document Object Model)是W3C组织定义的一种标准,用于表示HTML或XML文档的树形结构。在HTMLParser2中,DOM节点...
HTMLParser2与Apache HttpClient.jar结合使用时,可以构成一个高效的网页抓取和分析解决方案。 在网页分析领域,HTMLParser2.0提供了以下几个核心功能: 1. **解析器接口**:HTMLParser2.0提供了一个简洁的API,...
2. **自定义标签处理**:一个独特的特性是它支持处理自定义的HTML标签,这对于解析包含非标准标签或者XHTML文档特别有用。 3. **事件驱动模型**:解析器采用事件驱动模型,当遇到HTML元素、属性或其他结构时,会...
2. **HTMLParser-2.0-SNAPSHOT-src.zip**:这是源代码文件,提供了HTMLParser库的源码。通过查看源代码,开发者可以深入理解库的工作原理,学习如何实现类似功能,甚至可以根据需求对其进行修改或扩展。源代码对于...
说明了htmlparser2.0的相关事项,同时也给出了htmlparser2.0的api
首先,我们需要导入Python的`HTMLParser`模块。在Python 3中,这个模块已经被重命名为`html.parser`,因此应该导入`html.parser`,而不是`HTMLParser`。以下是如何导入的示例: ```python from ...
HtmlParser 2.1 API,由java编程,用于解析网页内容。
2. `htmlparser-1.6-all-src.zip` 是源代码包,包含了HTMLParser的完整源代码。这对于开发者来说非常重要,因为它允许我们查看和理解库内部的工作原理,便于自定义、调试或扩展库的功能。开发者可以直接解压这个zip...
使用 htmlparser2 进行递归 DOM 遍历。 入门 安装模块: npm install walkers var walkers = require ( '../lib/walkers.js' ) ; var request = require ( 'request' ) ; var htmlparser = require ( "htmlparser2...
2. 遍历HTML节点: HTMLParser将HTML文档解析为一系列的Node对象。你可以遍历这些节点,访问它们的类型、标签名、文本内容等。例如: ```java for (Node node : parser.getNodes()) { if (node instanceof TagNode)...
META-INF/maven/org.htmlparser/htmlparser/pom.properties META-INF/maven/org.htmlparser/htmlparser/pom.xml org.htmlparser.Parser.class org.htmlparser.PrototypicalNodeFactory.class org.htmlparser.beans....
请注意,你需要根据实际使用的解析库(htmlparser或htmlparser2)调整代码,因为它们生成的JSON格式可能略有不同。 ### 总结 `htmlparser-to-html`是一个实用的前端工具,它简化了HTML字符串与JSON数据之间的转换...
在描述中提到的“org.htmlparser.Node”和其他的.class文件,这些都是HTMLParser库的核心组成部分。`org.htmlparser.Node` 是HTMLParser中的一个关键接口,它代表HTML文档中的一个节点,可以是元素(Element)、注释...
`htmlparser.dll`是这个库的动态链接库文件,它包含了编译好的类和方法,可以直接在C#项目中引用以使用HTMLParser的功能。在C#项目中,我们可以通过添加对dll的引用来调用库中的方法,比如解析HTML字符串、查找特定...
2. **错误处理**:HTMLParser.net可以处理不完美的HTML,允许在遇到语法错误时继续解析,而不是抛出异常。这对于处理来自互联网的非标准或不完整HTML非常有用。 3. **CSS选择器支持**:库提供了类似jQuery的API,使...