HtmlParser提取网页中的纯文本信息

转载自   HtmlParser提取网页中的纯文本信息

 HTMLParser 一个解析web页面的开源类库。 
    
    准备学习下搜索方面的技术,就学习了些网络爬虫的知识。最近一直在一个点上困惑,如何提取一个网页上的纯文本信息。要使用正则表达式的话呢,需要考虑很多因素,而且标签也太多,不是很方便,效果也不好。就准备利用开源包,最后选择了HtmlParser。 

    在网上搜索如何利用HtmlParser提取页面信息。提取的结果都不是很理想,都包含了很多无用空格信息,还有很多JS代码。 

如利用如下的代码: 

  1. public void getWebPageContent(String htmlContent) {  
  2.   
  3.         Parser parser = new Parser();  
  4.         try {  
  5.             parser.setInputHTML(htmlContent);  
  6.             parser.setEncoding(parser.getURL());  
  7.             HtmlPage page = new HtmlPage(parser);  
  8.             parser.visitAllNodesWith(page);  
  9.   
  10.             logger.info(page.getTitle());  
  11.   
  12.             NodeList list = page.getBody();  
  13.   
  14.             StringBuffer sb = new StringBuffer();  
  15.             for (NodeIterator iterator = list.elements(); iterator  
  16.                     .hasMoreNodes();) {  
  17.                 Node node = iterator.nextNode();  
  18.                 logger.info(node.toPlainTextString());  
  19.   
  20.         } catch (ParserException e) {  
  21.             // TODO Auto-generated catch block  
  22.             e.printStackTrace();  
  23.         }  
  24.     }  

就包含了很多的空格信息以及JS代码。 


后来在HTMLParser的API中的org.htmlparser.beans.StringBean类的描述中找到如下一段文字:
 
  1. Extract strings from a URL.   
  2.   
  3. Text within <SCRIPT></SCRIPT> tags is removed.  
  4.   
  5. The text within <PRE></PRE> tags is not altered.  
  6.   
  7. The property Strings, which is the output property is null until a URL is set. So a typical usage is:  
  8.   
  9.      StringBean sb = new StringBean ();  
  10.      sb.setLinks (false);  
  11.      sb.setReplaceNonBreakingSpaces (true);  
  12.      sb.setCollapse (true);  
  13.      sb.setURL ("http://www.netbeans.org"); // the HTTP is performed here  
  14.      String s = sb.getStrings ();  
  15.    


利用后,如下: 
  1. /** 
  2.      * 根据提供的URL,获取此URL对应网页的纯文本信息 
  3.      * @param url 提供的URL链接 
  4.      * @return RL对应网页的纯文本信息 
  5.      * @throws ParserException 
  6.      */  
  7.     public String getText(String url)throws ParserException{  
  8.         StringBean sb = new StringBean();  
  9.           
  10.         //设置不需要得到页面所包含的链接信息  
  11.         sb.setLinks(false);  
  12.         //设置将不间断空格由正规空格所替代  
  13.         sb.setReplaceNonBreakingSpaces(true);  
  14.         //设置将一序列空格由一个单一空格所代替  
  15.         sb.setCollapse(true);  
  16.         //传入要解析的URL  
  17.         sb.setURL(url);  
  18.         //返回解析后的网页纯文本信息  
  19.         return sb.getStrings();  
  20.     }  

便可以解析出网页中的纯文本信息,而且效果很好  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程语言的发展趋势及未来方向(1):历史回顾及趋势概述

大家好&#xff0c;我是Anders Hejlsberg&#xff0c;现在是微软的Technical Fellow&#xff0c;担任C#编程语言的首席架构师&#xff0c;也参与并领导.NET Framework以及各种语言的开发。我现在打算谈一下……实际上是我脑海中一些影响未来5到10年编程语言设计的内容。比如C#或…

调用反射类的指定方法

package org.entity;import java.lang.reflect.Method;/*** 本案例演示如何通过反射将字符串转换为类* */ public class Test2_2 {public static void main(String[] args) {String user "org.entity.User";//字符串是该类的全限定名try {Class clzz Class.forName…

springboot创建项目 编写dao serviece 和controller 持久层用mybatis

11 刷新一下pom 万一没有引入进去 jpa和mybatis选择哪个&#xff1f; 1.看领导要求 2.都会最好 多学点是没错的

android查看wifi是否双频,Android判断wifi是5G还是2.4G

我一开始看这帖子&#xff0c;找不到答案&#xff0c;为了后来的人&#xff0c;我来回复吧。WifiManager wifiManager (WifiManager) getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo wifiManager.getConnectionInfo();根据wifiInfo.getFrequency()可以判断是不是…

java过滤html标签获取纯文本信息

转载自 java过滤html标签获取纯文本信息 package com.lyt.base.util;import java.util.regex.Pattern;public class FilterHtmlUtil {public static String Html2Text(String inputString){String htmlStr inputString; //含html标签的字符串String textStr "";java…

综述:编程语言的发展趋势及未来方向

程序设计离不开编程语言&#xff0c;但是编程语言在国内的大环境中似乎一直是个二等公民。国内的计算机教育和工程培训&#xff0c;似乎一直在宣传“语言不重要&#xff0c;重要的是思想”&#xff0c;“语言一通百通”等观点&#xff0c;甚至在许多人眼中“语言的讨论”完全是…

IntelliJ IDEA: 无法创建Java Class文件

IntelliJ IDEA: 无法创建Java Class文件 2018年06月21日 22:49:44 dandelion9508 阅读数 11864 今天打开项目时&#xff0c;发现右击新建不了java.class文件&#xff0c;于是尝试了以下方法&#xff1a; &#xff08;1&#xff09;选择 File——>Project Structure——>…

iphone android互传文件夹,安卓和苹果手机怎么互传文件_安卓与苹果手机之间互传文件的方法教程_3DM手游...

一直以来&#xff0c;很多的app都是分为安卓和IOS两个版本&#xff0c;在使用上&#xff0c;两个平台之间很多功能都不能跨平台使用。比如大家在玩游戏时充值的东西&#xff0c;在苹果充值之后&#xff0c;同一个账号转到安卓手机上玩&#xff0c;那些东西都是不能迁移进来的。…

jsoup怎么获取两个标签之间的text?

转载自 jsoup怎么获取两个标签之间的text? 这是开发者工具解析到的一个论坛页面结构。。可以看到每一个a标签和br标签之间总会夹着一个text,,也就是密码文本。而我根据网上的API教程&#xff1a;siblingA ~ siblingX: 查找A元素之前的同级X元素&#xff0c;比如&#xff1a…

编程语言的发展趋势及未来方向(7):总结

OK&#xff0c;我想现在已经讲的差不多了&#xff0c;我来做个总结吧。 在我看来&#xff0c;对于编程语言来说&#xff0c;现在出现了许多有趣的东西&#xff0c;也是令人激动的时刻。在过去&#xff0c;大约1995-2005年&#xff0c;的确可以说是一个有些特别的编程语言的黄金…

通过反射获取方法返回的类型

package org.entity;import java.lang.reflect.Method; import java.lang.reflect.Type;/*** 本案例演示如何通过反射将字符串转换为类* */ public class Test3 {public static void main(String[] args) {String user "org.entity.User";//字符串是该类的全限定名t…

android 按键消息,在android中模拟键盘消息(shell命令的方法)

已找到解决方案[code]use: sendeventcommand format: sendeventdevice type code value[command] [device] [type] [code] [value]sendevent/dev/input/event0 1 229 1/dev/input/event0 is the device to send it to[type] 1 is unknow for me ( maybe code for physical butt…

强行覆盖远程的gitlab 出错

需要删除原来的.git 文件 重新生成一次 强行覆盖远程的gitlab 出错 我这里出错的原因是 因为我本地一个readme.md和远程的README.MD文本内容不同 我将本地的readme.md 删除后重新操作就对了 1.删除原来的.git文件 AdministratorUSER-20170819XG MINGW64 /e/unicomWork…

使用 jsoup 对 HTML 文档进行解析和操作

转载自 使用 jsoup 对 HTML 文档进行解析和操作jsoup 简介 Java 程序在解析 HTML 文档时&#xff0c;相信大家都接触过 htmlparser 这个开源项目&#xff0c;我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章&#xff0c;分别是&#xff1a;从 HTML 中攫取你所需的信息和…

编程语言的发展趋势及未来方向(6):并发

好&#xff0c;最后我想谈的内容是“并发”。 听说过摩尔定律的请举手……几乎是所有人。那么多少人听说了摩尔定律已经结束了呢&#xff1f;嗯&#xff0c;还是有很多人。我有好消息&#xff0c;也有坏消息。我认为摩尔定律并没有停止。摩尔定律说的是&#xff1a;可以在集成电…

GitLab创建项目 命令上传代码

注册哪里要验证点击图片 这里需要外网 有可能 右键gitbash 首次将本地创建项目推送远程代码仓库 touch readme.md 创建readme文件 git init 初始化git git status 查看修改状态 git add . 添加至本地仓库管理 git status 检查是否添加成功 git commit -am fir…

Linux ss 热点,在Linux系统下的ss命令(socket statistics)各种使用示例

本文演示在Linux操作系统下的ss命令(socket statistics)的各种使用示例。ss(套接字统计信息)是一个命令行工具&#xff0c;用于监视套接字连接并显示Linux系统的套接字统计信息。它可以显示PACKET套接字、TCP套接字、UDP套接字、DCCP套接字、RAW套接字、Unix域套接字等的统计信…

Jsoup代码解读之七-实现一个CSS Selector

转载自 Jsoup代码解读之七-实现一个CSS Selector当当当&#xff01;终于来到了Jsoup的特色&#xff1a;CSS Selector部分。selector也是我写的爬虫框架webmagic开发的一个重点。附上一张street fighter的图&#xff0c;希望以后webmagic也能挑战Jsoup! select机制 Jsoup的se…

http1.1协议

HTTP/1.1协议 2018年01月04日 17:27:35 上杉绘梨衣- 阅读数 245 HTTP是hypertext transfer protocol(超文本传输协议)的简写&#xff0c;它是TCP/IP协议的一个应用层协议&#xff0c;用于定义WEB浏览器与WEB服务器之间数据交换的过程。 1.Http1.0和1.1 Http1.0:请求一次&…

ios刷android8.0,颤抖吧 iOS, Android 8.0正式发布!

原标题&#xff1a;颤抖吧 iOS&#xff0c; Android 8.0正式发布&#xff01;如果现在选一个最好用的手机操作系统&#xff0c;多数人还是认为 iOS。不过最近几年&#xff0c;苹果和安卓的竞争越来越激烈&#xff0c;苹果的优势也越来越小。眼看 Android 8.0 就要来了&#xff…