HtmlParser提取网页中的纯文本信息
2013-07-11 17:16
375 查看
HTMLParser 一个解析web页面的开源类库。
准备学习下搜索方面的技术,就学习了些网络爬虫的知识。最近一直在一个点上困惑,如何提取一个网页上的纯文本信息。要使用正则表达式的话呢,需要考虑很多因素,而且标签也太多,不是很方便,效果也不好。就准备利用开源包,最后选择了HtmlParser。
在网上搜索如何利用HtmlParser提取页面信息。提取的结果都不是很理想,都包含了很多无用空格信息,还有很多JS代码。
如利用如下的代码:
Java代码
public void getWebPageContent(String htmlContent) {
Parser parser = new Parser();
try {
parser.setInputHTML(htmlContent);
parser.setEncoding(parser.getURL());
HtmlPage page = new HtmlPage(parser);
parser.visitAllNodesWith(page);
logger.info(page.getTitle());
NodeList list = page.getBody();
StringBuffer sb = new StringBuffer();
for (NodeIterator iterator = list.elements(); iterator
.hasMoreNodes();) {
Node node = iterator.nextNode();
logger.info(node.toPlainTextString());
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
就包含了很多的空格信息以及JS代码。
后来在HTMLParser的API中的org.htmlparser.beans.StringBean类的描述中找到如下一段文字:
Java代码
Extract strings from a URL.
Text within <SCRIPT></SCRIPT> tags is removed.
The text within <PRE></PRE> tags is not altered.
The property Strings, which is the output property is null until a URL is set. So a typical usage is:
StringBean sb = new StringBean ();
sb.setLinks (false);
sb.setReplaceNonBreakingSpaces (true);
sb.setCollapse (true);
sb.setURL ("http://www.netbeans.org"); // the HTTP is performed here
String s = sb.getStrings ();
利用后,如下:
Java代码
/**
* 根据提供的URL,获取此URL对应网页的纯文本信息
* @param url 提供的URL链接
* @return RL对应网页的纯文本信息
* @throws ParserException
*/
public String getText(String url)throws ParserException{
StringBean sb = new StringBean();
//设置不需要得到页面所包含的链接信息
sb.setLinks(false);
//设置将不间断空格由正规空格所替代
sb.setReplaceNonBreakingSpaces(true);
//设置将一序列空格由一个单一空格所代替
sb.setCollapse(true);
//传入要解析的URL
sb.setURL(url);
//返回解析后的网页纯文本信息
return sb.getStrings();
}
便可以解析出网页中的纯文本信息,而且效果很好
ps:太不会搜索信息了,API中就有这样的方法,都没找到。
准备学习下搜索方面的技术,就学习了些网络爬虫的知识。最近一直在一个点上困惑,如何提取一个网页上的纯文本信息。要使用正则表达式的话呢,需要考虑很多因素,而且标签也太多,不是很方便,效果也不好。就准备利用开源包,最后选择了HtmlParser。
在网上搜索如何利用HtmlParser提取页面信息。提取的结果都不是很理想,都包含了很多无用空格信息,还有很多JS代码。
如利用如下的代码:
Java代码
public void getWebPageContent(String htmlContent) {
Parser parser = new Parser();
try {
parser.setInputHTML(htmlContent);
parser.setEncoding(parser.getURL());
HtmlPage page = new HtmlPage(parser);
parser.visitAllNodesWith(page);
logger.info(page.getTitle());
NodeList list = page.getBody();
StringBuffer sb = new StringBuffer();
for (NodeIterator iterator = list.elements(); iterator
.hasMoreNodes();) {
Node node = iterator.nextNode();
logger.info(node.toPlainTextString());
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void getWebPageContent(String htmlContent) { Parser parser = new Parser(); try { parser.setInputHTML(htmlContent); parser.setEncoding(parser.getURL()); HtmlPage page = new HtmlPage(parser); parser.visitAllNodesWith(page); logger.info(page.getTitle()); NodeList list = page.getBody(); StringBuffer sb = new StringBuffer(); for (NodeIterator iterator = list.elements(); iterator .hasMoreNodes();) { Node node = iterator.nextNode(); logger.info(node.toPlainTextString()); } catch (ParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
就包含了很多的空格信息以及JS代码。
后来在HTMLParser的API中的org.htmlparser.beans.StringBean类的描述中找到如下一段文字:
Java代码
Extract strings from a URL.
Text within <SCRIPT></SCRIPT> tags is removed.
The text within <PRE></PRE> tags is not altered.
The property Strings, which is the output property is null until a URL is set. So a typical usage is:
StringBean sb = new StringBean ();
sb.setLinks (false);
sb.setReplaceNonBreakingSpaces (true);
sb.setCollapse (true);
sb.setURL ("http://www.netbeans.org"); // the HTTP is performed here
String s = sb.getStrings ();
Extract strings from a URL. Text within <SCRIPT></SCRIPT> tags is removed. The text within <PRE></PRE> tags is not altered. The property Strings, which is the output property is null until a URL is set. So a typical usage is: StringBean sb = new StringBean (); sb.setLinks (false); sb.setReplaceNonBreakingSpaces (true); sb.setCollapse (true); sb.setURL ("http://www.netbeans.org"); // the HTTP is performed here String s = sb.getStrings ();
利用后,如下:
Java代码
/**
* 根据提供的URL,获取此URL对应网页的纯文本信息
* @param url 提供的URL链接
* @return RL对应网页的纯文本信息
* @throws ParserException
*/
public String getText(String url)throws ParserException{
StringBean sb = new StringBean();
//设置不需要得到页面所包含的链接信息
sb.setLinks(false);
//设置将不间断空格由正规空格所替代
sb.setReplaceNonBreakingSpaces(true);
//设置将一序列空格由一个单一空格所代替
sb.setCollapse(true);
//传入要解析的URL
sb.setURL(url);
//返回解析后的网页纯文本信息
return sb.getStrings();
}
/** * 根据提供的URL,获取此URL对应网页的纯文本信息 * @param url 提供的URL链接 * @return RL对应网页的纯文本信息 * @throws ParserException */ public String getText(String url)throws ParserException{ StringBean sb = new StringBean(); //设置不需要得到页面所包含的链接信息 sb.setLinks(false); //设置将不间断空格由正规空格所替代 sb.setReplaceNonBreakingSpaces(true); //设置将一序列空格由一个单一空格所代替 sb.setCollapse(true); //传入要解析的URL sb.setURL(url); //返回解析后的网页纯文本信息 return sb.getStrings(); }
便可以解析出网页中的纯文本信息,而且效果很好
ps:太不会搜索信息了,API中就有这样的方法,都没找到。
相关文章推荐
- HtmlParser提取网页中的纯文本信息-java
- 黄聪:使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- 黄聪:使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)(转)
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)
- 利用htmlparser提取网页纯文本的例子
- java使用htmlparser提取网页纯文本例子
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies
- 使用Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies .
- 【python】使用HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies
- Go语言正则表达式提取网页文本
- 自动向网页Post信息并提取返回的信息
- JS提取网页中表格内容,将特定列内的html文本中id,href,onclick属性提取出来
- 【搜索引擎Jediael开发笔记3】使用HtmlParser提取网页中的链接
- 一般网页信息抓取(Java htmlparser)
- 微信分享文本、图片(本地、二进制、网络图片)、音频、视频、Gif动态图片、网页信息--大汇总
- C语言通过关键字从文本中提取有效信息
- 【搜索引擎Jediael开发笔记3】使用HtmlParser提取网页中的链接
- 自动提取网页的信息 ,并分析之 ()