htmlparser的使用java_java htmlparser 简单使用入门

article/2025/10/9 19:17:32

下面对htmlparser 简单介绍下,信息来自百度

0818b9ca8b590ca3270a3433284dd417.png

htmlparser

[1]

是一个纯的

java写的

html(

标准通用标记语言下的一个应用)解析的库,它不依赖于其它的java库文件,主要用于改造或

提取html。它能超高速解析html,而且不会出错。现在htmlparser最新版本为2.0。

毫不夸张地说,htmlparser就是目前最好的html解析和分析的工具。

无论你是想抓取网页数据还是改造html的内容,用了htmlparser绝对会忍不住称赞。 基本功能

1、信息提取

文本

信息抽取,例如对HTML进行有效信息搜索;

链接提取,用于自动给页面的链接文本加上链接的标签;

资源提取,例如对一些

图片、声音的资源的处理;

链接检查,用于检查HTML中的链接是否有效;

页面内容的监控。

2、信息转换

链接重写,用于修改

页面中的所有

超链接;

网页内容拷贝,用于将网页内容保存到本地;

内容检验,可以用来过滤网页上一些令人不愉快的字词;

HTML信息清洗,把本来乱七八糟的HTML信息格式化;

转成

XML格式数据。 找了点资料学习了下,将笔记记录下来 官网:

http://htmlparser.codeplex.com/

下面使用一个小程序演示下,演示抓取美团上面的文字

0818b9ca8b590ca3270a3433284dd417.png

发现这些文本都在ul上且ul的样式为filter-strip__list

0818b9ca8b590ca3270a3433284dd417.png

可以通过Ul找到子元素

附上代码

package com.test;

import java.io.IOException;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import org.htmlparser.Node;

import org.htmlparser.NodeFilter;

import org.htmlparser.Parser;

import org.htmlparser.filters.HasAttributeFilter;

import org.htmlparser.util.NodeList;

import org.htmlparser.util.ParserException;

/**

* 获取网页内容

*

* @author xuyw

* @email xyw10000@163.com

* @date 2013-06-04

*/

public class Test3 {

public static void main(String[] args) {

try {

Parser parser = new Parser((HttpURLConnection) (new URL(

"http://nc.meituan.com/")).openConnection());

// TextExtractingVisitor visitor = new TextExtractingVisitor();

// parser.visitAllNodesWith(visitor);

// String textInPage = visitor.getExtractedText();

// System.out.println(textInPage);

//查找含有filter-strip__list样式的元素

NodeFilter filter = new HasAttributeFilter("class",

"filter-strip__list");

NodeList nodes = parser.extractAllNodesThatMatch(filter);

System.out.println("------抓取到" + nodes.size() + "条符合条件记录------");

for (int i = 0; i < nodes.size(); i++) {

Node node = nodes.elementAt(i);

System.out.println();

System.out.println(node.getText());

NodeList cnode = node.getChildren();

for (int j = 0; j < cnode.size(); j++) {

Node tnode = cnode.elementAt(j);

System.out.println(tnode.toPlainTextString());

}

System.out.println();

System.out.println(node.getText());

}

} catch (ParserException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}运行结果

0818b9ca8b590ca3270a3433284dd417.png

下面简单介绍其他方法

构造函数:

public Parser ();

public Parser (Lexer lexer, ParserFeedback fb);

public Parser (URLConnection connection, ParserFeedback fb) throws ParserException;

public Parser (String resource, ParserFeedback feedback) throws ParserException;

public Parser (String resource) throws ParserException;

public Parser (Lexer lexer);

public Parser (URLConnection connection) throws ParserException;

public static Parser createParser (String html, String charset);

HTMLParser将解析过的信息保存为一个树的结构。

Node是信息保存的数据类型基础。

Node中包含的方法有几类:

Node getParent ()--取得父节点

NodeList getChildren ()--取得子节点的列表

Node getFirstChild ()--取得第一个子节点

Node getLastChild ()--取得最后一个子节点

Node getPreviousSibling ()--取得前一个兄弟

Node getNextSibling ()--取得下一个兄弟节点

取得Node内容的函数:

String getText ()--取得文本

String toPlainTextString()--取得纯文本信息。

String toHtml () --取得HTML信息

String toHtml (boolean verbatim):取得HTML信息

String toString ()--取得字符串信息

Page getPage ():--取得这个Node对应的Page对象

int getStartPosition ()--取得这个Node在HTML页面中的起始位置

int getEndPosition ()--取得这个Node在HTML页面中的结束位置

用于Filter过滤的函数:

void collectInto (NodeList list, NodeFilter filter):基于filter的条件对于这个节点进行过滤,符合条件的节点放到list中。

用于Visitor遍历的函数:

void accept (NodeVisitor visitor):对这个Node应用visitor

void setPage (Page page):设置这个Node对应的Page对象

void setText (String text):设置文本

void setChildren (NodeList children):设置子节点列表

其他函数:

void doSemanticAction ():执行这个Node对应的操作(只有少数Tag有对应的操作)

Filter类

对结果进行过滤,取得需要的内容。HTMLParser在org.htmlparser.filters包之内一共定义了16个不同的Filter,也可以分为几类。

判断类Filter:

TagNameFilter --标签过滤

HasAttributeFilter --属性过滤

有3个构造函数:

public HasAttributeFilter ();

public HasAttributeFilter (String 属性);

public HasAttributeFilter (String 属性, String 值);

HasChildFilter --子元素过滤

HasParentFilter --父元过滤素

HasSiblingFilter --兄弟过滤

IsEqualFilter

逻辑运算Filter:

AndFilter

可以把两种Filter进行组合

NodeFilter filterID = new HasAttributeFilter( "id" );

NodeFilter filterChild = new HasChildFilter(filterA);

NodeFilter filter = new AndFilter(filterID, filterChild);

NotFilter【类似上面】

OrFilter【类似上面】

XorFilter

NodeFilter filterID = new HasAttributeFilter( "id" );

NodeFilter filterChild = new HasChildFilter(filterA);

NodeFilter filter = new XorFilter(filterID, filterChild);

其他Filter:

NodeClassFilter

NodeFilter filter = new NodeClassFilter(RemarkNode.class);

NodeList nodes = parser.extractAllNodesThatMatch(filter);

StringFilter

用于过滤显示字符串中包含制定内容的Tag。注意是可显示的字符串,不可显示的字符串中的内容(例如注释,链接等等)不会被显示。

NodeFilter filter = new StringFilter("www.baidu.com");

NodeList nodes = parser.extractAllNodesThatMatch(filter);

LinkStringFilter

用于判断链接中是否包含某个特定的字符串,可以用来过滤出指向某个特定网站的链接。

NodeFilter filter = new LinkStringFilter("www.baidu.com");

NodeList nodes = parser.extractAllNodesThatMatch(filter);

LinkRegexFilter

RegexFilter

CssSelectorNodeFilter

所有的Filter类都实现了org.htmlparser.NodeFilter接口。这个接口只有一个主要函数:

boolean accept (Node node);

各个子类分别实现这个函数,用于判断输入的Node是否符合这个Filter的过滤条件,如果符合,返回true,否则返回false。


http://chatgpt.dhexx.cn/article/iJk6D1XZ.shtml

相关文章

java htmlparser 使用教程_HtmlParser基础教程

1、相关资料 官方文档&#xff1a;http://htmlparser.sourceforge.net/samples.html API&#xff1a;http://htmlparser.sourceforge.net/javadoc/index.html 其它HTML 解释器&#xff1a;jsoup等。由于HtmlParser自2006年以后就再没更新&#xff0c;目前很多人推荐使用jsoup代…

htmlparser补全HTML,htmlparser

源程序代码 我们的 C# 程序中经常会产生一些数据&#xff0c;这些数据可以使用 Html 表格进行展现。现在让我们开始写相关的 C# 程序吧。下面就是 HtmlMaker.cs&#xff1a;01:usingSystem;02:usingSystem.IO;03:usingSystem.Net;04:usingSystem.Data;05:usingSystem.Drawing;0…

【大数据】——Mahout(Hadoop体系的机器学习)

一、前言 Mahout 是Apache的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现&#xff0c;包括聚类、分类、推荐过滤、频繁子项挖掘。此外&#xff0c;通过使用 Apache Ha…

mahout连接mysql时无法推荐_Mahout推荐系统初试

Mahout是Apache Software Foundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用Apache Hadoop库,Mahout可以有效…

mahout 0.9 连接mysql_部署安装 Mahout

一、Mahout简介 Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Apache Mahout项目已经发展到了它的第三个年头&#xff0c;目前已经有了…

mahout 推荐算法 java_推荐系统之推荐算法实战:mahout推荐算法框架

1.Mahout介绍 1.1概述 根据百度的解说&#xff0c;Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现&#xff0c;包括聚…

Mahout之——Mahout推荐算法API详解

前言 用Mahout来构建推荐系统&#xff0c;是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法&#xff0c;并实现了并行化&#xff0c;提供非常简单的API接口&#xff1b;困难是因为我们不了解算法细节&#xff0c;很难去根据业务的场景进行算法配置和调…

mahout 记录

mahout 记录 mahout记录 输入 mahout 是以偏好&#xff08;preference&#xff09;的形式来表达的&#xff0c;一个偏好包含一个用户ID、一个物品ID、还有一个用户对物品偏爱程度的数值 简单示意图&#xff1a; DataModel 实现存储并为计算提供其所需的所有偏好、用户和物品…

Apache Mahout初体验

1、Mahout是什么&#xff1f; Mahout是一个算法库,集成了很多算法。 Apache Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09;旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能…

java调用集群mahout_Mahout--用Maven构建Mahout项目(mahoutDemo)

前言 基于Hadoop的项目,不管是MapReduce开发,还是Mahout的开发都是在一个复杂的编程环境中开发。Java的环境问题,是困扰着每个程序员的噩梦。Java程序员,不仅要会写Java程序,还要会调linux,会配hadoop,启动hadoop,还要会自己运维。所以,新手想玩起Hadoop真不是件简单的…

使用Mahout搭建推荐系统之入门篇-Mahout实战

原始地址&#xff1a;http://my.oschina.net/Cfreedom/blog/201828 用意&#xff1a; 结合上篇博客&#xff0c;写写代码熟悉一下Mahout。很多地方想法都比较粗糙&#xff0c;亟待指正。 代码放在了&#xff1a; https://github.com/xiaoqiangkx/qingRS 一、基本内容 1. 加载…

Mahout初探

mahout官网,执行下面命令,详细安装过程可参考Mahout介绍、安装与应用案例 tar -xzvf apache-mahout-distribution-0.13.0.tar.gzln -s apache-mahout-distribution-0.13.0 mahout 修改profile环境变量 export MAHOUT_HOME/home/hadoop/application/mahout export MAHOUT_CONF…

mahout java api_Mahout推荐算法API详解

前言 用Mahout来构建推荐系统&#xff0c;是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法&#xff0c;并实现了并行化&#xff0c;提供非常简单的API接口&#xff1b;困难是因为我们不了解算法细节&#xff0c;很难去根据业务的场景进行算法配置和调…

mahout LDA

什么是Mahout&#xff1f; ” Apache Mahout™ project’s goal is to build a scalable machine learning library ” 我来拓展一下&#xff1a;(1) Mahout 是Apache旗下的开源项目&#xff0c;集成了大量的机器学习算法。(2) 大部分算法&#xff0c;可以运行在Hadoop上&…

Mahout

1、Mahout是什么 Mahout是一个算法库,集成了很多算法。Apache Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09;旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Ma…

mahout 详解

前言 用Mahout来构建推荐系统&#xff0c;是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法&#xff0c;并实现了并行化&#xff0c;提供非常简单的API接口&#xff1b;困难是因为我们不了解算法细节&#xff0c;很难去根据业务的场景进行算法配置和调…

基于Mahout实现协同过滤推荐算法的电影推荐系统

1 Mahout介绍 Apache Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09; 旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编…

Mahout简介

Mahout简介 一、mahout是什么 Apache Mahout是ApacheSoftware Foundation &#xff08;ASF&#xff09;旗下的一个开源项目&#xff0c;提供了一些经典的机器学习的算法&#xff0c;皆在帮助开发人员更加方便快捷地创建智能应用程序。目前已经有了三个公共发型版本&#xff0…

推荐系统 Mahout入门之简单使用

Mahout&#xff1a; Apache Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09;旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout项目目前已经有了多个公共发行…

Mahout介绍和简单应用

Mahout学习&#xff08;主要学习内容是Mahout中推荐部分的ItemCF、UserCF、Hadoop集群部署运行&#xff09; 1.Mahout是什么&#xff1f; Mahout是一个算法库,集成了很多算法。 Apache Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09;旗下的一个开源项目&…