LinkTaglink=(LinkTag)nodelist.elementAt(i);
//链接地址
System.out.println(link.getAttribute("href")+"\n");
//链接名称
System.out.println(link.getStringText());
}
}
}
结果如下:
连接1
连接2
2.使用HtmlParser抓去网页内容
packageparser;
importorg.htmlparser.Parser;
importorg.htmlparser.beans.StringBean;
importorg.htmlparser.filters.NodeClassFilter;
importorg.htmlparser.parserapplications.StringExtractor;
importorg.htmlparser.tags.BodyTag;
importorg.htmlparser.util.NodeList;
importorg.htmlparser.util.ParserException;
/**
*使用HtmlParser抓去网页内容:
要抓去页面的内容最方便的方法就是使用StringBean.里面有几个控制页面内容的几个参数.
*在后面的代码中会有说明.Htmlparser包中还有一个示例StringExtractor里面有个直接得到内容的方法,
*其中也是使用了StringBean.另外直接解析Parser的每个标签也可以的.
*
*@authorchenguoyong
*
*/
publicclassGetContent{
publicvoidgetContentUsingStringBean(Stringurl){
StringBeansb=newStringBean();
sb.setLinks(true);//是否显示web页面的连接(Links)
//为了取得页面的整洁美观一般设置上面两项为true,如果要保持页面的原有格式,如代码页面的空格缩进可以设置为false
sb.setCollapse(true);//如果是true的话把一系列空白字符用一个字符替代.
sb.setReplaceNonBreakingSpaces(true);//Iftrueregularspace
sb
.setURL("
System.out.println("TheContentis:
\n"+sb.getStrings());
}
publicvoidgetContentUsingStringExtractor(Stringurl,booleanlink){
//StringExtractor内部机制和上面的一样.做了一下包装
StringExtractorse=newStringExtractor(url);
Stringtext=null;
try{
text=se.extractStrings(link);
System.out.println("Thecontentis:
\n"+text);
}catch(ParserExceptione){
e.printStackTrace();
}
}
publicvoidgetContentUsingParser(Stringurl){
NodeListnl;
try{
Parserp=newParser(url);
nl=p.parse(newNodeClassFilter(BodyTag.class));
BodyTagbt=(BodyTag)nl.elementAt(0);
System.out.println(bt.toPlainTextString());//保留原来的内容格式.包含js代码
}catch(ParserExceptione){
e.printStackTrace();
}
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
Stringurl="
//newGetContent().getContentUsingParser(url);
//--------------------------------------------------
newGetContent().getContentUsingStringBean(url);
}
}
3.将整个html内容保存到指定文件
packageparser;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
import.MalformedURLException;
import.URL;
/**
*基本能实现网页抓取,不过要手动输入URL将整个html内容保存到指定文件
*
*@authorchenguoyong
*
*/
publicclassScrubSelectedWeb{
privatefinalstaticStringCRLF=System.getProperty("line.separator");
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
try{
URLur=newURL("
InputStreaminstr=ur.openStream();
Strings,str;
BufferedReaderin=newBufferedReader(newInputStreamReader(instr));
StringBuffersb=newStringBuffer();
BufferedWriterout=newBufferedWriter(newFileWriter(
"D:
/outPut.txt"));
while((s=in.readLine())!
=null){
sb.append(s+CRLF);
}
System.out.println(sb);
str=newString(sb);
out.write(str);
out.close();
in.close();
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
4利用htmlparser提取网页纯文本的例子
packageparser;
importorg.htmlparser.Node;
importorg.htmlparser.NodeFilter;
importorg.htmlparser.Parser;
importorg.htmlparser.filters.TagNameFilter;
importorg.htmlparser.tags.TableTag;
importorg.htmlparser.util.NodeList;
/**
*标题:
利用htmlparser提取网页纯文本的例子
*/
publicclassTestHTMLParser2{
/**
*读取目标html内容
*
*/
publicstaticvoidtestHtml(){
try{
StringsCurrentLine;
StringsTotalString;
sCurrentLine="";
sTotalString="";
java.io.InputStreaml_urlStream;
.URLl_url=new.URL(
"http:
//10.249.187.199:
8083/injs100/");
.HttpURLConnectionl_connection=(.HttpURLConnection)l_url
.openConnection();
l_connection.connect();
l_urlStream=l_connection.getInputStream();
java.io.BufferedReaderl_reader=newjava.io.BufferedReader(
newjava.io.InputStreamReader(l_urlStream));
while((sCurrentLine=l_reader.readLine())!
=null){
sTotalString+=sCurrentLine+"\r\n";
}
StringtestText=extractText(sTotalString);
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*抽取纯文本信息
*@paraminputHtml:
html文本
*@return
*@throwsException
*/
publicstaticStringextractText(StringinputHtml)throwsException{
StringBuffertext=newStringBuffer();
Parserparser=Parser.createParser(newString(inputHtml.getBytes(),
"GBK"),"GBK");
//遍历所有的节点
NodeListnodes=parser.extractAllNodesThatMatch(newNodeFilter(){
publicbooleanaccept(Nodenode){
returntrue;
}
});
System.out.println(nodes.size());
for(inti=0;iNodenodet=nodes.elementAt(i);
//字符串的代表性节点:
节点的描述
text.append(newString(nodet.toPlainTextString().getBytes("GBK"))
+"\r\n");
}
returntext.toString();
}
/**
*读取文件的方式/utl来分析内容.filePath也可以是一个Url.
*@paramresource:
文件/Url
*@throwsException
*/
publicstaticvoidtest5(Stringresource)throwsException{
ParsermyParser=newParser(resource);
myParser.setEncoding("GBK");
StringfilterStr="table";
NodeFilterfilter=newTagNameFilter(filterStr);
NodeListnodeList=myParser.extractAllNodesThatMatch(filter);
/*for(inti=0;i{
TableTagtabletag=(TableTag)nodeList.elementAt(i);
//标签名称
System.out.println(tabletag.getTagName());
System.out.println(tabletag.getTe