java解析html_java中几种解析html的工具
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的工具相关推荐
- java word库_几种解析Word文档的Java类库比较
推荐指数:⭐ 因为之前做过EXCEL的解析,所以我首选就是POI,然而经过调查之后发现POI解析Word文档就是个坑,非常难用不说,有些功能还不支持.试验一番之后不得不放弃了. 推荐指数:⭐⭐⭐ 发现 ...
- Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF
1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是: BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...
- java遍历list_Java中四种遍历List的方法总结(推荐)
实例如下: package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterato ...
- php批量添加水印图片大小,解析php中两种缩放图片的函数,为图片添加水印
有两种改变图像大小的方法.(1):ImageCopyResized() 函数在所有GD版本中有效,但其缩放图像的算法比较粗糙. (2):ImageCopyResampled(),其像素插值算法得到的图 ...
- 服务器解析form中文件,客户端解析服务器响应的multipart/form-data数据
multipart/form-data,多部件请求体.这个请求体比较特殊,它可以拆分为多个部件,每个部件都有自己的header和body,最常用的地方就是:客户端文件上传,因为有多个部件,在上传文件的 ...
- java调用url505_JAVA中三种URL连接方法
Java的网络类可以让你通过网络或者远程连接来实现应用.而且,这个平台现在已经可以对国际互联网以及URL资源进行访问了.Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷.我们通 ...
- java链接_JAVA中三种URL连接方法
Java的网络类可以让你通过网络或者远程连接来实现应用.而且,这个平台现在已经可以对国际互联网以及URL资源进行访问了.Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷.我们通 ...
- java unit test_Java中几种Unit Test场景
为什么写本文 当团队有要求写Unit Test时,你是不是想坚持团队的这种要求,但是内心中会有一下几种想法呢? 1,我该怎么开始Unit Test ? 2,我写代码似乎没有什么该测试的? 3,感觉写U ...
- Java—遍历集合的N种方式总结Collections工具类
遍历集合的N种方式总结 [示例1]遍历List方法1,使用普通for循环 for(int i=0;i<list.size();i++){ //list为集合的对象名 String ...
最新文章
- [译] MDC-101 Flutter:Material Components(MDC)基础(Flutter)
- 【任务脚本】京jd东jd炸年兽活动任务全自动程序
- 典型案例 3:十分钟搭建弹性可扩展的 Web API
- TCP/IP学习笔记(五)TCP的保活定时器
- python基础语法-异常处理
- 第四篇 Python循环
- Eclipse中SVN过滤指定文件夹或文件下内容
- 我是一个请求,我是如何被发送的?
- Exploit 代码用于攻击中?GitHub 马上删除
- vue-cli2.0+webpack 项目搭建
- 降维系列之 SNE与t-SNE
- OA系统(海信集团)双因素身份认证解决方案
- 小虾米闯江湖服务器维护中,《小虾米闯江湖》6月23日关于出师、判师细节更新补充...
- Digital Photo Professional 4 如何导出jpg
- 网络处理中TLV形式的不固定格式匹配
- (三)Position Rank代码解读(一)
- IOS - rangeOfString、NSNotFound
- 老曹眼中的“团队管理”
- 【​观察】美国公有云“排位赛”结束 中国市场正“步其后尘”?
- 波特率dlm_波特率与分频系数
热门文章
- mysql创建视图不允许子查询
- 【剑指Offer学习】【面试题66:矩阵中的路径】
- 创建完maven工程之后,提示[FATAL_ERROR] Cannot start Maven: Project JDK is not specified. a href=''Configure...
- Android对点击事件的处理
- struts2学习之基础笔记1
- 报表中表达式的全局集合(Visual Studio 报表设计器)
- Ubuntu 12.04下NFS安装配置图解
- AndroidStudio安卓原生开发_android.view.WindowManager$BadTokenException: Unable to add---Android原生开发工作笔记129
- Element-UI-的布局和容器---Element-UI工作笔记003
- 编程语言_JavaScript_面试题004