解析得到除去标签的txt内容
2008-09-24 00:00
423 查看
NodeList body_nodes=this.getParser().parse(body_filter); for(int i=0;i<body_nodes.size();i++) { Node node=body_nodes.elementAt(i); Parser body_parser=new Parser(node.toHtml()); TextExtractingVisitor visitor=new TextExtractingVisitor(); body_parser.visitAllNodesWith(visitor); body.append(visitor.getExtractedText()); }
TextExtractingVisitor,visitAllNodesWith等类及方法都是Visitor中比较很重要但也很少见的。
下面附源代码:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
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;
import com.extractor.Extractor;
public class ExtractorHangdian extends Extractor{
public void extract()
{
BufferedWriter bw=null;
String indextime;
String title;
StringBuffer body=new StringBuffer();;
NodeFilter time_filter=new AndFilter(new TagNameFilter("font"),new HasAttributeFilter("color","#808080"));
NodeFilter title_filter1=new AndFilter(new TagNameFilter("td"),new HasChildFilter(new TagNameFilter("b")));
NodeFilter body_filter=new AndFilter(new TagNameFilter("td"),new HasChildFilter(new TagNameFilter("p")));
try
{
NodeList title_nodes=this.getParser().parse(title_filter1);
Node node=title_nodes.elementAt(0);
NodeList node2=node.getChildren();
//title=node2.elementAt(0).toHtml(); /* '\r\n' */
//title=node2.elementAt(1).toHtml(); /*font color="#000080" style="font-size:14.4px*/
//title=node2.elementAt(2).toHtml(); /* b */
title=node2.elementAt(3).toHtml(); /* 教材征订及教师用书登记通知 */
bw=new BufferedWriter(new FileWriter(new File(this.getOutputPath()+title+".txt")));
String url_seg1=getInputFilePath().substring(3,30);
int end=getInputFilePath().lastIndexOf(".");
String url_seg2=getInputFilePath().substring(30, end);
String url_seg=url_seg1+".asp?"+url_seg2;
url_seg=url_seg.replaceAll("\\\\","/");
String url="http://"+url_seg;
bw.write(url+NEWLINE);
bw.write(title+NEWLINE);
}
catch(Exception e)
{
e.printStackTrace();
}
this.getParser().reset();
try
{
NodeList time_nodes=this.getParser().parse(time_filter);
Node time_node=time_nodes.elementAt(1);//这里的“1”表示符合time_filter的第二个元素
indextime=time_node.getNextSibling().toHtml();
bw.write(indextime+NEWLINE);
}
catch(Exception e)
{
e.printStackTrace();
}
this.getParser().reset();//得到除去标签的所有txt文本
try
{ NodeList body_nodes=this.getParser().parse(body_filter); for(int i=0;i<body_nodes.size();i++) { Node node=body_nodes.elementAt(i); Parser body_parser=new Parser(node.toHtml()); TextExtractingVisitor visitor=new TextExtractingVisitor(); body_parser.visitAllNodesWith(visitor); body.append(visitor.getExtractedText()); }bw.write(body+NEWLINE);
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
if(bw!=null)
bw.close();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
这里顺便提一下,当年bw没有关掉,怎么读不进去,搞了我好几天,郁闷死了,想起来就火大,注意!!
相关文章推荐
- 解析得到除去标签的txt内容
- 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析
- php7下dedecms文章内容不能显示,dede织梦{dede:field.body /}标签无法解析
- 将网页上word、pdf、txt文件下载下来,解析成文本内容
- thinkphp 解析带html标签的内容
- thinkphp 解析带html标签的内容
- sax解析 得到xml文档所有内容和获取指定标签的值
- php逐行读取.txt文件内容,并解析每行内容
- echo输出的内容不解析html标签
- 通过js去掉所有的html标签,得到HTML标签中的所有内容
- 解析xml文件的标签内容
- 以标签名和内容得到的DOM
- JS获取本地文件并且解析文件内容(XML,TXT)
- 通过js去掉所有的html标签,得到HTML标签中的所有内容 【2018-1-30】
- PHPCMS 2008中tag内容标签的解析过程
- Cordova页面解析页面中script标签内容失败,Refused to execute inline script because it violates the following
- 通过js去掉所有的html标签,得到HTML标签中的所有内容
- 判断一个文件夹下的txt文件内部字符串 和另外一个txt每一行的字符串比较得到的内容
- Jsoup解析HTML 标签内容