javahtmlparserjar包(java使用jar包)

本篇文章给大家谈谈javahtmlparserjar包,以及java使用jar包对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、java.lang.NoClassDefFoundError: net.htmlparser.jericho.Source2、谁教我用java遍历网页里面的所有超链接,把这些超链接链接到得网页下载下来。3、java中几种解析html的工具4、Java中怎么抓取网页中的图片5、java org.htmlparser怎么安装6、怎么让HTML显示纯文本

java.lang.NoClassDefFoundError: net.htmlparser.jericho.Source

1、包里没这个类。可以打开这个文件,找到对面的目录下,看是是否有这个Source.class

2、这个jar是否加入了classpath中

3、都没问题的话,就是jar包冲突,有其他版本的jar和这个导入的冲突

谁教我用java遍历网页里面的所有超链接,把这些超链接链接到得网页下载下来。

有一个开源的裤:htmlparser足够你用的了!

1、 简介

htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或提取html。它提供了接口,支持线性和嵌套HTML文本。在实际的项目中只需要将htmlparser.jar 导入classpath中,就可以使用HTMLParser提供的API了。

2、 主要应用

HTML Parser项目主要可以用在以下两个方面:

1. 信息提取

· 文本信息抽取,例如对HTML进行有效信息搜索

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

· 资源提取,例如对一些图片、声音的资源的处理

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

· 页面内容的监控

2. 信息转换

· 链接重写,用于修改页面中的所有超链接

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

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

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

· 转成XML格式数据

3、 数据组织分析

HTML有3种类型的节点:RemarkNode:html中的注释,TagNode:标签节点,TextNode:文本节点。HTMLParser将读取的二进制数据流,进行编码转换、词法分析等操作,生成树形层次结构的Node节点集合。

HtmlParser主要靠Node和Tag来表达Html。

Node是形成树结构表示HTML的基础,所有的数据表示都是接口Node的实现,Node定义了与页面树结构所表达的页面Page对象,定义了获取父、子、兄弟节点的方法,定义了节点到对应html文本的方法,定义了该节点对应的起止位置,定义了过滤方法 ,定义了Visitor访问机制。AbstractNode是Node的一种具体的类实现,起到构成树形结构的作用,除了同具体Node相关的accetp方法,toString,toHtml,toPlainTextString方法以外,AbstractNode实现了大多基本的方 法,使得它的子类,不用理会具体的树操作。

Node分成三类:

§ RemarkNode:代表Html中的注释

§ TagNode:标签节点,是种类最多的节点类型,上述Tag的具体节点类都是TagNode的实现。

§ TextNode:文本节点

Tag是具体分析的主要内容。Tag分成composite的Tag和不能包含其他Tag的简单Tag两类,其中前者的基类是CompositeTag,其子类包含BodyTag,Div,FrameSetTag,OptionTag,等27个子类 ;而简单Tag有BaseHrefTag、DoctypeTag,FrameTag,ImageTag,InputTag,JspTag,MetaTag,ProcessingInstructionTag这八类。

4、Visitor方式访问Html:

(1)、整体解析过程

§ 用一个URL或页面String做一个Parser

§ 用这个Parser做一个Visitor

§ 使用Parser.visitAllNodeWith(Visitor)来遍历节点

§ 获取Visitor遍历后得到的数据

(2)、系统Visitor功能简介:

§ ObjectFindingVisitor:用来找出所有指定类型的节点,采用getTags()来获取结果。

§ StringBean:用来从一个指定的URL获取移除了SCRIPT/SCRIPT和PRE/PRE之间代码的Html代码,也可以用做Visitor,用来移除这两种标签内部的代码,采用StringBean.getStrings()来获取结果。

§ HtmlPage:提取Title,body中的节点和页面中的TableTag节点。

§ LinkFindingVisitor:找出节点中包含某个链接的总个数。

§ StringFindingVisitor:找出遍历的TextNode中含有指定字符串的个数。

§ TagFindingVisitor:找出指定Tag的所有节点,可以指定多种类型。

§ TextExtractingVisitor:从网页中把所有标签去掉来提取文本,这个提取文本的Visitor有时是很实用的 ,只是注意在提取文本时将标签的属性也去掉了,也就是说只剩下标签之间的文本,例如a中的链接也去掉了。

§ UrlModifyingVisitor:用来修改网页中的链接。

(3)、Filter

如果说visitor是遍历提取信息,当然这个信息可以包括某些节点或者从节点分析出来的更有效的信息,这都取决于我们的Visitor做成什么样子,那么Filter则目标很明确,就是用来提取节点的。

系统定义了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来过滤节点,提取出我们所关注的节点,再对节点进行处理。通过这样的组合,一定能够找出我们所需要的信息。

5、乱码问题

对于HTMLParser 工具包我们需要修改其中的htmlparser.java文件使其适用中文的html文件分析。htmlparser.java文件中具体实现细节就不再介绍。这里主要是把protected static final String DEFAULT_CHARSET = “ISO-8859-1″;修改成protected static final String DEFAULT_CHARSET = “gb2312″;因为采用默认的字符集”ISO-8859-1″对含有中文的html文件进行分析的时候就会出现乱码。必须进行new String(str.getBytes(“ISO-8859-1″),”GB2312”)的转换工作。对于修改好的htmlparser工具包,需要重新压缩成.jar文件,放到jdk的工作环境中。

6、自定义标签:

注意这个类PrototyicalNodeFactory,首先创建一个它的实例,然后注册你说自定义的Tag,再将这个工厂放置到你的parser中:

factory.registerTag(new IFrameTag());

parser.setNodeFactory(factory);

然后你再试试看,保证能够解析到你想要得那些标准htmlparser不支持的tag。

java中几种解析html的工具

HTML分析是一个比较复杂的工作,Java世界主要有几款比较方便的分析工具:

1.Jsoup 

Jsoup是一个集强大和便利于一体的HTML解析工具。它方便的地方是,可以用于支持用jQuery中css selector的方式选取元素,这对于熟悉js的开发者来说基本没有学习成本。

String content = “blabla”;

Document doc = JSoup.parse(content);

Elements links = doc.select(“a[href]”);

Jsoup还支持白名单过滤机制,对于网站防止XSS攻击也是很好的。

2.HtmlParser

HtmlParser的功能比较完备,也挺灵活,但谈不上方便。这个项目很久没有维护了,最新版本是2.1。HtmlParser的核心元素是Node,对应一个HTML标签,支持getChildren()等树状遍历方式。HtmlParser另外一个核心元素是NodeFilter,通过实现NodeFilter接口,可以对页面元素进行筛选。这里有一篇HtmlParser的使用文章:使用 HttpClient 和 HtmlParser 实现简易爬虫。

3.Apache tika

tika是专为抽取而生的工具,还支持PDF、Zip甚至是Java Class。使用tika分析HTML,需要自己定义一个抽取内容的Handler并继承org.xml.sax.helpers.DefaultHandler,解析方式就是xml标准的方式。crawler4j中就使用了tika作为解析工具。SAX这种流式的解析方式对于分析大文件很有用,我个人倒是认为对于解析html意义不是很大。

InputStream inputStream = null;

HtmlParser htmlParser = new HtmlParser();

htmlParser.parse(new ByteArrayInputStream(page.getContentData()),

contentHandler, metadata, new ParseContext());

4.HtmlCleaner与XPath

HtmlCleaner最大的优点是:支持XPath的方式选取元素。XPath是一门在XML中查找信息的语言,也可以用于抽取HTML元素。XPath与CSS Selector大部分功能都是重合的,但是CSS Selector专门针对HTML,写法更简洁,而XPath则是通用的标准,可以精确到属性值。XPath有一定的学习成本,但是对经常需要编写爬虫的人来说,这点投入绝对是值得的。

Java中怎么抓取网页中的图片

通过httpclient来爬取网站内容,分析当前内容页中的图片‘规则’

抓取一般都是模拟浏览器访问目标网页,通过返回的页面html代码进行分析自己需要的数据

查找规则,例如你爬取的网页 ,看到当前页面显示的图片格式如下img src=””

通过解析爬取的网页源代码(html)进行字符串的操作即可,现在有相应的第三方jar包可以帮你更快的完成这部分工作,例如htmlpaser,获取到对应的地址,然后进行保存或下载。

你可以搜索,java爬虫(httpclient)和htmlpaser做更多的了解。

java org.htmlparser怎么安装

是要进行网页抓取吧,如是的话建议用Jsoup。

没有什么安装的,只要加个jar包就行。

HTMLParser是个很老的了,而且好久没更新了。

Jsoup还是不断在维护中的,而且它的抓取语法与jQuery完全类似,只要熟悉jQuery,就可很快掌握它。很简单的,相当资料可在百度里搜索。

怎么让HTML显示纯文本

HTML是超文本标记语言,标准通用标记语言下的一个应用。

“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。

超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。

1、在做接口的时候,有些模板xml标签不是CDATA规范的,这样就会在碰到这样的字符出现错误,需要替换,简单的思路是字符串替换或正则匹配,将替换成 。

2、特别是有些专辑描述是html的内容,写入xml文件的时候需要将html内容转化为文本内容。

3、下面给出HTML内容输出为存文本的两种工具方法,方便以后查阅。  

方法一:正则替换:

/**

* html转化为text

* @param inputString

* @return

*/

public static String html2Text(String inputString) {

String htmlStr = inputString; // 含html标签的字符串

String textStr = “”;

java.util.regex.Pattern p_script;

java.util.regex.Matcher m_script;

java.util.regex.Pattern p_style;

java.util.regex.Matcher m_style;

java.util.regex.Pattern p_html;

java.util.regex.Matcher m_html;

try {

String regEx_script = “[\\s]*?script[^]*?[\\s\\S]*?[\\s]*?\\/[\\s]*?script[\\s]*?”; // 定义script的正则表达式{或script]*?[\s\S]*?\/script

// }

String regEx_style = “[\\s]*?style[^]*?[\\s\\S]*?[\\s]*?\\/[\\s]*?style[\\s]*?”; // 定义style的正则表达式{或style]*?[\s\S]*?\/style

// }

String regEx_html = “[^]+”; // 定义HTML标签的正则表达式

p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);

m_script = p_script.matcher(htmlStr);

htmlStr = m_script.replaceAll(“”); // 过滤script标签

p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);

m_style = p_style.matcher(htmlStr);

htmlStr = m_style.replaceAll(“”); // 过滤style标签

p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);

m_html = p_html.matcher(htmlStr);

htmlStr = m_html.replaceAll(“”); // 过滤html标签

textStr = htmlStr;

} catch (Exception e) {

System.err.println(“Html2Text: ” + e.getMessage());

}

return textStr;

}

方法二:采用api形式,先倒入jar包htmllexer.jar,htmlparser.jar,sitecapturer.jar,thumbelina.jar,filterbuilder.jar :

public static String getHtmlText(String htmlContent) throws Exception

{

if(htmlContent==null)htmlContent=””;

//         增加一个br/,经测试,如果正文为纯文本,org.htmlparser会把参数当作一个文件处理

StringBuffer sbf = new StringBuffer(“”);

sbf.append(“br /”).append(htmlContent);

Parser parser = new Parser(sbf.toString());

TextExtractingVisitor visitor = new TextExtractingVisitor();

parser.visitAllNodesWith(visitor);

String sReturn = visitor.getExtractedText();

sReturn = sReturn.replace(” “, “”);//去掉空格以便统计字数

return sReturn;

}

javahtmlparserjar包(java使用jar包)

关于javahtmlparserjar包和java使用jar包的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月3日 19:52:20
下一篇 2024年4月3日 20:02:38

相关推荐

  • 深入java虚拟机pdf,深入java虚拟机 中村成洋 pdf

    在linux环境下,java怎么实现从word格式转换为pdf格式 //设置当前使用的打印机,我的Adobe Distiller打印机名字为 Adobe PDF wordCom.setProperty( ActivePrinter , new Variant( Adobe PDF ));//设置printout的参数,将word文档打印为postscript…

    2024年5月23日
    4400
  • java截取指定长度字符串,java截取指定字符串之后的

    java中如何截取字符串中的指定一部分 第一个参数是开始截取的字符位置。(从0开始)第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。 int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;split讲解:java.lang.string.split split 方法 将…

    2024年5月23日
    4200
  • java绑定一个端口,java使用端口

    java如何多个service共用一个端口 你如果有多个项目的话,你可以把多个项目放到一个tomcat里面,这样端口相同使用项目名称来进行区分项目。你如果非要使用同一个,你也可以配置不同的域名导向不同的项目。就是访问的域名不同转接到的项目不同。 如果需要同时启动多个程序,要么修改tomcat的配置文件中的监听端口。要么修改jar包程序的监听端口。不能在一台服…

    2024年5月23日
    3400
  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4600
  • 自学java找工作,自学java找工作需要包装简历吗

    自学java学多久可以找到工作 1、自学Java至少需要一年以上的时间才能达到找工作的水平。报班培训四到六个月的时间就可以找到一份不错的工作。 2、自学Java至少需要一年以上的时间才能达到找工作的水平。 3、如果要想找到一份Java相关的工作,需要至少学习5-6个月时间才能就业。Java开发需要掌握一些基础的编程语言知识,比如掌握面向对象的编程思想、基本的…

    2024年5月23日
    4300
  • java左移右移,java 左移

    java位移问题 1、思路:直接用Integer类的bit运算操作。 2、移位操作:左移:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。 3、Java 位运算 Java 位运算[转]一,Java 位运算表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的…

    2024年5月23日
    4100
  • java技术规范,java规范性要求

    现在主流的JAVA技术是什么? java最流行开发技术程序员必看 1 、Git Git一直是世界上最受欢迎的Java工具之一,也是Java开发人员最杰出的工具之一。Git是一个开源工具,是-种出色的分布式版本控制解决方案。 (1).Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱和注解。(2).Java面向对象编…

    2024年5月23日
    4000
  • javasocket编程,Java socket编程中,禁用nagle算法的参数

    Java进行并发多连接socket编程 1、Java可利用ServerSocket类对外部客户端提供多个socket接口。基本的做法是先创建一个ServerSocket实例,并绑定一个指定的端口,然后在这个实例上调用accept()方法等待客户端的连接请求。 2、Socket socket=server.accept(0;Thread handleThrea…

    2024年5月23日
    4600
  • java死亡,java死代码是什么意思

    我的世界传送回死亡点指令是什么? 1、下面就让我们一起来了解一下吧:我的世界回到死的地方的指令是输入/back,就可以回到死亡地点了,当然也可以看信标,因为死亡后会有一道光集中在死亡点,只要循着光就可以找到目的地了。 2、在服务器中的指令 首先打开指令台,在指令行输入“/back”就可以回到自己的死亡地点了。在单人游戏中的指令 在单人游戏中,您无法直接返回到…

    2024年5月23日
    4800
  • myeclipse能部署java工程么,myeclipse支持jdk18

    myeclipse如何建java文件 1、点击【File】—【New】–【Class】在如下界面,输入Class的名字,如Test,点击【Finish】。Test.java文件创建成功。 2、点击【File】—【New】–【Class】 在如下界面,输入Class的名字,如Test,点击【Finish】。 Te…

    2024年5月23日
    3900

发表回复

登录后才能评论



关注微信