用htmlparser截取新闻内容 java
来源:互联网 发布:淘宝手推货车 编辑:程序博客网 时间:2024/06/07 03:29
最近做毕设,需要从各大网站上下载网页,并提取出标题,作者,正文,日期等新闻内容。标题,作者,日期等因为长度较小,变化少,所以很容易搞定,而正文的抽取对于我这个刚学htmlparser的人来说就有些复杂了。由于正文标签中各种类型子标签的存在(如图片信息,超链接,粗体),使提取正文的内容变得有些不易。最近刚发现了StringBean这个好东西,它是visitor的一个子集,遍历所有节点,抽取文字信息,但是如果直接使用,遍历所有节点,会导致抓取到不需要的信息。所以,解决方法是,先用filter过滤到符合要求的正文节点,然后用StringBean遍历符合要求的所有节点,获取想要的新闻内容。
这里以news.qq.com里的新闻为例,分析2010年以后的QQ新闻(2010年以前QQ使用的是老网页模板,需要照具体情况改动filter的内容,就不一一列举了;并且只列举正文一种情况,日期,导读等另行添加代码,原理不变)
import org.htmlparser.beans.*;
import org.htmlparser.tags.*;
import org.htmlparser.filters.*;
import org.htmlparser.NodeFilter.*;
import org.htmlparser.Node.*;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.NodeIterator;
import org.htmlparser.visitors.*;
import org.htmlparser.Tag;
/*
之前的代码
*/
String content="";//content存储新闻正文内容
Parser parser = Parser.createParser(pageHTML, "GBK");//pageHTML是我下载到的网页源代码,也可以用url参数来创建一个parser.
NodeFilter filter = new AndFilter(new TagNameFilter("div"), new HasAttributeFilter("id", "Cnt-Main-Article-QQ"));//腾讯2010年以后的网页大多采用新模板
//不能用"h1"标签来判断新模板,因为2009年有特例。所以要看<div id="Cnt-Main-Article-QQ">,有这个的是新模板。
NodeFilter pf = new AndFilter(new NodeClassFilter(ParagraphTag.class), new HasParentFilter(filter));
//在<div id="Cnt-Main-Article-QQ">底下的p标签里的内容才是新闻正文内容
nodes = parser.parse(pf);//提取所有符合要求的正文节点
if (nodes.size() > 0)//以下是新模板对应的标签提取工作
{
StringBean sb = new StringBean();
sb.setCollapse(true);
nodes.visitAllNodesWith(sb);
if (sb.getStrings() != null) {
content += sb.getStrings();
//这样,就获取了新闻的内容
}
}
/*
之后的代码
*/
- 用htmlparser截取新闻内容 java
- 截取新闻html编码内容
- java 内容截取类
- java 内容的截取使用
- 用java截取网页源代码所需内容
- 用org.htmlparser包解析html正文内容的实现
- java 文本内容中 截取 方法
- 使用HTMLParser提取新闻的例子
- 利用htmlparser抓取网页内容
- HTMLParser - 通过Filter访问内容
- htmlparser解析网页内容代码
- 用Asp获取Dll加密新闻内容
- 用Asp获取Dll加密新闻内容
- 【业内新闻】 用眼睛控制虚拟现实内容
- java 中利用subString 截取字符串中第三个"/"后面的内容,并将/用>代替
- java HtmlParser 抓取信息
- JAVA htmlParser解析
- Java 网络爬虫-htmlparser
- VC ComboBox控件使用
- Linux 多线程应用中如何编写安全的信号处理函数
- XAMPP下载,轻松建立本地PHP运行环境
- Go语言开发工具 LiteIDE0.1 更新
- java 泛型
- 用htmlparser截取新闻内容 java
- 关于sqlserver的MSDN的连接
- C#WinForm程序设计——系统托盘NotifyIcon控件
- (转):内存器件介绍之RAM篇(一)
- day20 分页查询 事务 序列 索引 视图
- 《沉思录》
- HyperSQL 数据库的定义
- 轮滑
- [书摘]Android特色开发之Google Map和桌面组件二(转)