几种去除HTML的方法

在我平时的工作中,偶尔会用 java 做一些解析html的工作。有的时候我需要删除所有的html标签,只保留纯文字内容。这个问题在做过一些爬虫工作的朋友来说很简单。下面来说说,我们平时使用到的集中解析的方法。
使用正则表达式通过爬虫爬到的html内容,从程序角度来讲,就是一个字符串。我们可以对其按照纯文本处理的方式来处理。
我们在做文本处理的时候,第一个想到的就是正则表达式。从一个字符串中删除html,对于正则来说,还是比较简单的。毕竟还是有固定的格式,比如“”。
我们常用的的正则就是 ]> 或者 。
我们在使用正则的时候,需要注意的是正则默认是贪婪匹配。也就是说,正则表达式 能够匹配到更多的html内容,而不是单个标签。
现在,让我们测试一下它是否能从html源中删除标签。
正则测试删除标签1在我们测试删除html标签之前,首先让我们创建一个html例子,例如example1.html。
这是标题 如果应用程序x没有启动,可能的原因是 1. maven没有安装 2. 磁盘空间不足 3. 内存不足 现在,让我们写一个测试,用string.replaceall()来删除html标签。
string html = ... // load example1.htmlstring result = html.replaceall(]` >, );system.out.println(result);如果我们运行这个测试方法,我们会看到结果。
这是标题 如果应用程序x没有启动,可能的原因是 1.maven没有安装 2.磁盘空间不足 3.没有足够的内存输出结果保留了剥离后的html的空白处。我们在处理提取的文本时,可以很容易地删除或跳过这些空行或空白处。
正则测试删除标签2我们刚才已经看到了,通过使用regex来删除html标签是非常简单。但是粗暴的使用这种方法会有很多问题,我们不能预测最终的结果会是怎么样的。
例如,一个html文档可能有` 或标签,而我们可能不希望在结果中出现它们的内容。
此外,、、甚至是标签中的文本可能包含 字符。如果是这种情况,我们的正则方法可能会出错。
现在,让我们看看另一个例子,比如example2.html。
这是标题
// some js function
如果应用程序x没有启动,可能的原因是
maven
没有安装磁盘空间不足 (< 1g) 内存不足(< 64mb)
现在我们有一个标签和 <字符在标签内。
如果我们对example2.html使用同样的方法,我们会得到如下内容。
这是标题
// some js function
如果应用程序x没有启动,可能的原因是maven
没有安装
2. 磁盘空间不足 (
3. 内存不足(
显然,由于<字符的存在,我们丢失了一些文本。所以正则在处理文本的时候并不是万能的。我们可以使用一些 html 解析器来做这些比较复杂的场景。
使用jsoupjsoup 是一个流行的html解析库,如果想要从一个html文档中提取文本,我们可以简单地调用jsoup.parse(htmlstring).text()。
在项目中使用的时候,我们首先需要添加 jsoup 的依赖库,我们这里就通过maven的方式引入。
org.jsoup
jsoup
1.14.3
我们用 example2.html来测试一下。
string html = ... // load example2.html
system.out.println(jsoup.parse(html).text());
如果我们让这个方法运行,它就会打印出来。
这是标题 如果应用程序x没有启动,可能的原因是 1.maven没有安装 2.没有足够的(< 1g)磁盘空间 3.没有足够的(< 64mb)内存
从输出结果可知,jsoup已经成功地从html文档中提取了文本。另外,元素中的文本已经被忽略了。
此外,默认情况下,jsoup会删除所有的文本格式和空白处,比如换行符。
使用htmlcleanerhtmlcleaner 也是一个html解析库。
首先,我们需要在pom.xml中添加htmlcleaner 依赖。
net.sourceforge.htmlcleaner
htmlcleaner
2.25
我们可以设置[各种参数](http://htmlcleaner.sourceforge.net/parameters.php)来控制htmlcleaner的解析行为。我们在这里使用htmlcleaner在解析example2.html时跳过元素。
string html = ... // load example2.html
cleanerproperties props = new cleanerproperties();
props.setprunetags(script);
string result = new htmlcleaner(props).clean(html).gettext().tostring();
system.out.println(result);
运行一下,htmlcleaner将产生这样的输出。
这是标题
如果应用程序x没有启动,可能的原因是:
1.maven没有安装
2.没有足够的(< 1g)磁盘空间
3.内存不足(< 64mb)
我们可以看到,元素中的内容被忽略了,
标签转换为提取的文本中的换行符。另外, htmlcleaner 保留了html的空白内容。
总结在这篇文章中,我们学习了几种去除html的方法,我们需要注意的是,正则在文本处理的过程中并不是万能的。
`

由宁德时代提供磷酸铁锂动力电池配套的高端游船成功首航
具备物质成分识别技术的传感器模块的介绍
5G时代移动终端安全解决方案
中国移动正式推出了5G行业终端扬帆计划
PLC如何检测电动机故障 需注意什么
几种去除HTML的方法
苹果公司智能手表操作系统watchOS 7的最新版本
小米6什么时候上市?小米6最新消息汇总
嫦娥五号将在一周内完成大量重要的动作
电动车低于50%的时候就开始极速掉电了,这是怎么回事呢?
加拿大政府正在考虑用更低的利率来吸引比特币矿工入驻
无锡“新基建”建设,促进打造坚强智能电网
基于太赫兹超表面的热控光学加密技术介绍
军事系统的未来是软件定义和虚拟化的
PCBA部件推抗拉力规范和测试标准
基于OLED的便携式量子传感器研发应用
汽车用芯片短缺的原因
共话5G未来,美格智能携多款新品亮相2023MWC上海世界移动通信大会
窄脉冲时域反射仪采集和存储系统的硬件设计和实现
再次挑战iPhone!华为发布P10和P10 Plus双摄智能手机!