📄 astroextractortest.java
字号:
package ch9.htmlparser;
import java.util.ArrayList;
import java.util.List;
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.AndFilter;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.filters.HasChildFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.util.NodeList;
import org.htmlparser.visitors.TextExtractingVisitor;
public class AstroExtractorTest {
public static void main(String[] args) {
//标题
String title;
//星座
String constellation;
//主要内容
String body;
//总结
String summary;
try{
Parser parser = new Parser ("http://astro.sina.com.cn/sagittarius.html");
//设置编码方式
parser.setEncoding("gb2312");
//提取星座信息和总结信息的Filter
NodeFilter filter_constellation_summary =new AndFilter(new TagNameFilter("td"),
new HasChildFilter(new TagNameFilter("b")));
//提取标题的Filter
NodeFilter filter_title =new AndFilter(new TagNameFilter("font"),
new HasAttributeFilter("class","f1491"));
//提取内容的Filter
NodeFilter filter_body =new AndFilter(new TagNameFilter("td"),
new HasAttributeFilter("width","30%"));
//过滤星座和总结信息
NodeList nodelist=parser.parse(filter_constellation_summary);
Node node_constellation=nodelist.elementAt(0);
//提取星座信息
constellation=node_constellation.getFirstChild().getNextSibling().toHtml();
Node node_summary=nodelist.elementAt(1);
NodeList summary_nodelist=node_summary.getChildren();
//提取总结信息
summary=summary_nodelist.elementAt(3).toHtml();
//重置Parser
parser.reset();
//过滤标题信息
nodelist=parser.parse(filter_title);
Node node_title=nodelist.elementAt(0);
//提取标题信息
title=node_title.getNextSibling().getNextSibling().toHtml();
parser.reset();
//过滤内容信息
nodelist=parser.parse(filter_body);
Node node_body=nodelist.elementAt(0);
//通过过滤得到的Html创建一个新Parser
Parser body_parser=new Parser(node_body.toHtml());
//创建一个TextExtractingVisitor,从网页中把所有标签去掉来提取文本
TextExtractingVisitor visitor=new TextExtractingVisitor();
//遍历所有节点
body_parser.visitAllNodesWith(visitor);
//提取文本信息
body=visitor.getExtractedText();
System.out.println(title.trim());
System.out.println(constellation.trim());
System.out.println(body.trim());
System.out.println(summary.trim());
}catch(Exception e){
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -