大家好,我是指北君。
创新互联建站服务项目包括花溪网站建设、花溪网站制作、花溪网页制作以及花溪网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,花溪网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到花溪省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
在我平时的工作中,偶尔会用 Java 做一些解析HTML的工作。有的时候我需要删除所有的HTML标签,只保留纯文字内容。这个问题在做过一些爬虫工作的朋友来说很简单。下面来说说,我们平时使用到的集中解析的方法。
通过爬虫爬到的HTML内容,从程序角度来讲,就是一个字符串。我们可以对其按照纯文本处理的方式来处理。
我们在做文本处理的时候,第一个想到的就是正则表达式。从一个字符串中删除HTML,对于正则来说,还是比较简单的。毕竟还是有固定的格式,比如“<...>”。
我们常用的的正则就是 <[^>]> 或者 <.*?> 。
我们在使用正则的时候,需要注意的是正则默认是贪婪匹配。也就是说,正则表达式 <.*> 能够匹配到更多的HTML内容,而不是单个标签。
现在,让我们测试一下它是否能从HTML源中删除标签。
在我们测试删除HTML标签之前,首先让我们创建一个HTML例子,例如example1.html。
这是标题
如果应用程序X没有启动,可能的原因是
1. Maven没有安装
2. 磁盘空间不足
3. 内存不足
现在,让我们写一个测试,用String.replaceAll()来删除HTML标签。
String html = ... // load example1.html
String result = html.replaceAll("<[^>]`>", "");
System.out.println(result);
如果我们运行这个测试方法,我们会看到结果。
这是标题
如果应用程序X没有启动,可能的原因是
1.Maven没有安装
2.磁盘空间不足
3.没有足够的内存
输出结果保留了剥离后的HTML的空白处。我们在处理提取的文本时,可以很容易地删除或跳过这些空行或空白处。
我们刚才已经看到了,通过使用Regex来删除HTML标签是非常简单。但是粗暴的使用这种方法会有很多问题,我们不能预测最终的结果会是怎么样的。
例如,一个HTML文档可能有
如果应用程序X没有启动,可能的原因是
1. id="link"
href="http://maven.apache.org/">
Maven
没有安装
2. 磁盘空间不足 (<1G)
3. 内存不足(<64MB)