当前位置: 移动技术网 > IT编程>开发语言>Java > 解析得到除去标签的txt内容

解析得到除去标签的txt内容

2017年12月12日  | 移动技术网IT编程  | 我要评论
复制代码 代码如下:

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没有关掉,怎么读不进去,搞了我好几天,郁闷死了,想起来就火大,注意!!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网