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解析html_java中几种解析html的工具相关推荐

  1. java word库_几种解析Word文档的Java类库比较

    推荐指数:⭐ 因为之前做过EXCEL的解析,所以我首选就是POI,然而经过调查之后发现POI解析Word文档就是个坑,非常难用不说,有些功能还不支持.试验一番之后不得不放弃了. 推荐指数:⭐⭐⭐ 发现 ...

  2. Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF

    1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是: BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...

  3. java遍历list_Java中四种遍历List的方法总结(推荐)

    实例如下: package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterato ...

  4. php批量添加水印图片大小,解析php中两种缩放图片的函数,为图片添加水印

    有两种改变图像大小的方法.(1):ImageCopyResized() 函数在所有GD版本中有效,但其缩放图像的算法比较粗糙. (2):ImageCopyResampled(),其像素插值算法得到的图 ...

  5. 服务器解析form中文件,客户端解析服务器响应的multipart/form-data数据

    multipart/form-data,多部件请求体.这个请求体比较特殊,它可以拆分为多个部件,每个部件都有自己的header和body,最常用的地方就是:客户端文件上传,因为有多个部件,在上传文件的 ...

  6. java调用url505_JAVA中三种URL连接方法

    Java的网络类可以让你通过网络或者远程连接来实现应用.而且,这个平台现在已经可以对国际互联网以及URL资源进行访问了.Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷.我们通 ...

  7. java链接_JAVA中三种URL连接方法

    Java的网络类可以让你通过网络或者远程连接来实现应用.而且,这个平台现在已经可以对国际互联网以及URL资源进行访问了.Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷.我们通 ...

  8. java unit test_Java中几种Unit Test场景

    为什么写本文 当团队有要求写Unit Test时,你是不是想坚持团队的这种要求,但是内心中会有一下几种想法呢? 1,我该怎么开始Unit Test ? 2,我写代码似乎没有什么该测试的? 3,感觉写U ...

  9. Java—遍历集合的N种方式总结Collections工具类

    遍历集合的N种方式总结 [示例1]遍历List方法1,使用普通for循环 for(int i=0;i<list.size();i++){         //list为集合的对象名 String ...

最新文章

  1. [译] MDC-101 Flutter:Material Components(MDC)基础(Flutter)
  2. 【任务脚本】京jd东jd炸年兽活动任务全自动程序
  3. 典型案例 3:十分钟搭建弹性可扩展的 Web API
  4. TCP/IP学习笔记(五)TCP的保活定时器
  5. python基础语法-异常处理
  6. 第四篇 Python循环
  7. Eclipse中SVN过滤指定文件夹或文件下内容
  8. 我是一个请求,我是如何被发送的?
  9. Exploit 代码用于攻击中?GitHub 马上删除
  10. vue-cli2.0+webpack 项目搭建
  11. 降维系列之 SNE与t-SNE
  12. OA系统(海信集团)双因素身份认证解决方案
  13. 小虾米闯江湖服务器维护中,《小虾米闯江湖》6月23日关于出师、判师细节更新补充...
  14. Digital Photo Professional 4 如何导出jpg
  15. 网络处理中TLV形式的不固定格式匹配
  16. (三)Position Rank代码解读(一)
  17. IOS - rangeOfString、NSNotFound
  18. 老曹眼中的“团队管理”
  19. 【​观察】美国公有云“排位赛”结束 中国市场正“步其后尘”?
  20. 波特率dlm_波特率与分频系数

热门文章

  1. mysql创建视图不允许子查询
  2. 【剑指Offer学习】【面试题66:矩阵中的路径】
  3. 创建完maven工程之后,提示[FATAL_ERROR] Cannot start Maven: Project JDK is not specified. a href=''Configure...
  4. Android对点击事件的处理
  5. struts2学习之基础笔记1
  6. 报表中表达式的全局集合(Visual Studio 报表设计器)
  7. Ubuntu 12.04下NFS安装配置图解
  8. AndroidStudio安卓原生开发_android.view.WindowManager$BadTokenException: Unable to add---Android原生开发工作笔记129
  9. Element-UI-的布局和容器---Element-UI工作笔记003
  10. 编程语言_JavaScript_面试题004