仅以此文章表达介绍下将html解析成纯文本的多种方式
1.jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。
可参考:
http://www.iteye.com/topic/1010581
public void parse(String urlStr) {
// 返回结果初始化。
Document doc = null;
try {
doc = Jsoup
.connect(urlStr)
.userAgent(
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.15)") // 设置User-Agent
.timeout(5000) // 设置连接超时时间
.get();
} catch (MalformedURLException e) {
log.error( e);
return ;
} catch (IOException e) {
if (e instanceof SocketTimeoutException) {
log.error( e);
return ;
}
if(e instanceof UnknownHostException){
log.error(e);
return ;
}
log.error( e);
return ;
}
system.out.println(doc.title());
Element head = doc.head();
Elements metas = head.select("meta");
for (Element meta : metas) {
String content = meta.attr("content");
if ("content-type".equalsIgnoreCase(meta.attr("http-equiv"))
&& !StringUtils.startsWith(content, "text/html")) {
log.debug( urlStr);
return ;
}
if ("description".equalsIgnoreCase(meta.attr("name"))) {
system.out.println(meta.attr("content"));
}
}
Element body = doc.body();
for (Element img : body.getElementsByTag("img")) {
String imageUrl = img.attr("abs:src");//获得绝对路径
for (String suffix : IMAGE_TYPE_ARRAY) {
if(imageUrl.indexOf("?")>0){
imageUrl=imageUrl.substring(0,imageUrl.indexOf("?"));
}
if (StringUtils.endsWithIgnoreCase(imageUrl, suffix)) {
imgSrcs.add(imageUrl);
break;
}
}
}
}
2 nekohtml
import java.io.BufferedReader;
import java.io.FileReader;
import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class Demo {
public static String TextExtractor(Node root){
//若是文本节点的话,直接返回
if (root.getNodeType() == Node.TEXT_NODE) {
return root.getNodeValue().trim();
}
if(root.getNodeType() == Node.ELEMENT_NODE) {
Element elmt = (Element) root;
//抛弃脚本
if (elmt.getTagName().equals("STYLE")
|| elmt.getTagName().equals("SCRIPT"))
return "";
NodeList children = elmt.getChildNodes();
StringBuilder text = new StringBuilder();
for (int i = 0; i < children.getLength(); i++) {
text.append(TextExtractor(children.item(i)));
}
return text.toString();
}
//对其它类型的节点,返回空值
return "";
}
public static void main(String[] args) throws Exception{
//生成html parser
DOMParser parser = new DOMParser();
//设置网页的默认编码
parser.setProperty(
"http://cyberneko.org/html/properties/default-encoding ",
"gb18030");
//input file
BufferedReader in = new BufferedReader(new FileReader("input.htm"));
parser.parse(new InputSource(in));
Document doc = parser.getDocument();
//获得body节点,以此为根,计算其文本内容
Node body = doc.getElementsByTagName("BODY").item(0);
System.out.println(TextExtractor(body));
}
}
另外强调下,在用nekohtml对html页面进行解析的时候,经常会碰到 这样的符号经解析之后变成了?,在网上搜索了下答案之后发现了解决方案。
方案一:先将 用空字符串取代。
方案二:原来neko能够自动对这种类型的HTML字符实体进行分析,但是资源文件却不包含对 的定义。在nekohtml.jar中找到了它使用的资源文件HTMLlat1.properties,在其中加入了一行: nbsp=\u00a0,问题就解决了。
3.htmlparser
用法差不多。
好吧,有人总结的更全面
http://blessed24.iteye.com/blog/865197
分享到:
相关推荐
总的来说,HttpClient负责网络通信,jsoup处理HTML内容,而HtmlParser和htmllexer则用于更精细的HTML解析工作。了解和掌握这些库的使用,对于提升Java爬虫的开发效率和质量至关重要。在实践中,根据具体需求选择合适...
jsoup:Java HTML 解析器 jsoup是一个用于处理现实世界 HTML 的 Java 库。它使用最好的 HTML5 DOM 方法和 CSS 选择器,提供了一个非常方便的 API,用于获取 URL 以及提取和操作数据。 jsoup实现了WHATWG HTML5规范...
总结来说,jsoup是Java开发人员处理HTML的得力工具,无论是在网页抓取、数据分析,还是在构建需要解析和操作HTML的应用场景下,都发挥着重要的作用。它简化了HTML处理的过程,提高了开发效率,是Java生态系统中的一...
NekoHtml是一个开源的、Java实现的...学习和掌握如何使用NekoHtml,可以帮助开发者更有效地解析和操作HTML文档,提升工作效率。同时,通过研究提供的"ParseHtmlFiles",可以加深对NekoHtml工作原理和实际应用的理解。
**jsoup API解析HTML** jsoup是一个非常强大的Java库,专为处理真实世界的HTML而设计。它提供了方便的API,用于提取和操作数据,使用DOM,CSS和jQuery-like方法。在深入jsoup的API之前,我们需要理解HTML解析的重要...
Jsoup是一个Java库,它提供了强大的功能来解析HTML,提取和操作数据。这个库的设计理念是使处理HTML变得简单,类似于jQuery的API,使得开发者能够方便地访问和操作HTML元素。在本文中,我们将深入探讨如何使用Jsoup...
Jsoup以浏览器的方式解析HTML,使得我们可以方便地通过CSS选择器来查找和操作元素,极大地简化了这一过程。 ### Jsoup的基本概念 1. **Jsoup连接(Connection)**:使用Jsoup的第一步是建立到目标网页的连接。这...
Jsoup提供了一种简单、安全且有效的方法来解析和操作HTML文档,使得开发者能够轻松地从网页中提取结构化数据。 ### 1. Jsoup的基本概念 Jsoup的核心功能是解析HTML文档,并将其转化为一个DOM(Document Object ...
这两个库都是Java开发者常用来处理HTTP请求和解析HTML文档的强大工具。 首先,让我们了解**HttpClient**。HttpClient是Apache软件基金会的一个开源项目,它提供了丰富的API来处理HTTP协议。通过HttpClient,我们...
jsoup在java代码中高效解析html字符串为dom结构,并可实现对dom结构的灵活操作,特别适合移动端返回字段为html形式的解析过滤处理
在Java中解析HTML时,一个常用的库是NekoHTML,它是一个开源项目,主要用于构建和解析不完整的、错误的HTML文档。本篇文章将深入探讨NekoHTML的工作原理以及如何在Java中使用它。 NekoHTML是由Apache Software ...
总之,Jsoup为Android开发者提供了一种高效、便捷的方式来解析和操作HTML,从而在各种应用场景中实现数据的提取和处理。通过熟练掌握Jsoup,开发者可以轻松地从网页中获取有价值的信息,并将其融入到Android应用程序...
Jsoup是一款非常强大的Java库,专门用于处理HTML和XML文档,提供了一系列简洁的API来抓取、解析、修改以及格式化这些文档。在现代Web开发中,数据抓取和网页解析是常见需求,Jsoup凭借其高效且易用的特性,成为...
这是使用Jsoup解析HTML得到数据的一个小例子,具体的使用方法请参见我的博客:http://blog.csdn.net/ProgramChangesWorld/article/details/47134255
Jsoup是一款非常强大的Java库,专门用于处理HTML文档,提供了丰富的API来抓取、解析、修改和输出HTML内容。在Java开发中,如果你需要从网页上提取数据或者进行Web抓取,Jsoup是一个理想的选择。这个压缩包文件“用...
JSoup利用DOM模型来解析HTML,允许开发者通过节点遍历、查找和修改文档。 2. **CSS选择器**:JSoup支持CSS选择器,这使得能够以简洁的方式选取HTML元素。例如,`$("div.title")` 将选取所有类名为"tilte"的`<div>`...
在压缩包文件"JsoupDemo"和"Jsoup"中,可能包含了使用Jsoup进行DOM解析的示例代码。这些代码通常会展示如何连接到URL,选择元素,提取数据,以及进行一些基本的DOM操作。通过阅读和运行这些示例,你可以更深入地了解...
JSoup是一款强大的Java库,专为处理和解析HTML文档而设计。它提供了简单易用的API,使开发者能够轻松地提取数据、操作DOM(文档对象模型)以及清理HTML。标题中的"jsoup解析html所需包1.7.3"表明我们将讨论的是JSoup...
### jsoup根据URL解析HTML ...总之,`jsoup`是一个强大的工具,可以帮助开发者轻松地解析和操作HTML文档。通过理解和应用最佳实践,可以更高效地利用这一工具来完成复杂的Web爬虫任务或其他相关项目。
- **频繁更新**:相比于其他HTML解析工具如htmlparser,jsoup更为活跃,持续维护更新。 - **强大功能**:jsoup不仅能够解析HTML文档,还能通过DOM或CSS选择器来高效检索和操作数据。 - **易于集成**:其API设计友好...