您的位置:首页 > 编程语言 > Java开发

java读取html文件并抽取a href相关连接和链接标题

2010-03-18 09:45 176 查看
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.*;
import java.io.*;
import java.nio.CharBuffer;
public class RegTest
{
public static void main(String[] args)
{

//定义一个文章列表类。包含文章的网址和文章标题
class ArticleList{
String URLs;
String title;

public ArticleList(){}
public ArticleList(String t,String u)
{
title=t;
URLs=u;

}

public String toString()
{
return ("标题:"+title+" 网址:"+URLs+" ");

}
}
//----------start---读取HTML文件至buff--------------------------------------------------------
File file = new File("C://bb.html");
BufferedReader reader = null;
StringBuffer buff = new StringBuffer();
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;

int line = 1;
//一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null){
//显示行号
buff.append(tempString+"/r/n");
//System.out.println("line " + line + ": " + tempString);
line++;
}
// System.out.println(buff.toString());
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null){
try {
reader.close();
} catch (IOException e1) {
}
}
}

//------------end--读取---------------------------------------------------------------------------

ArrayList <ArticleList> al=new ArrayList<ArticleList>();
String s=buff.toString();
System.out.println(s);//"</p><p style=height:14px><a href=http://jingjia.baidu.com>企业推广</a> | <a href=http://top.baidu.com>搜索风云榜</a> | <a href=/home.html>关于百度</a> | <a href=http://ir.baidu.com>About Baidu</a></p><p id=b>©2008 Baidu <a href=http://www.baidu.com/duty>使用百度前必读</a> <a href=http://www.miibeian.gov.cn target=_blank>京ICP证030173号</a> <a href=http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001092500412><img src=http://gimg.baidu.com/img/gs.gif></a></p></center></body></html><!--543ff95f18f36b11-->";
String regex="<a.*?/a>";

Pattern pt=Pattern.compile(regex);
//System.out.println(regex);
Matcher mt=pt.matcher(s);
// String includeString=".*baidu.com.*";//必须包含 字符串"baidu.com"

while(mt.find())
{
if(true)
{

//System.out.println(mt.group());

String s2=">[^<].*?[^>]</a>";//标题部分
String s3="href=/".*?/"";

Pattern pt2=Pattern.compile(s2);
Matcher mt2=pt2.matcher(mt.group());
Pattern pt3=Pattern.compile(s3);
Matcher mt3=pt3.matcher(mt.group());
while(mt2.find()&&mt3.find())
{
System.out.println("标题:"+mt2.group().replaceAll(">|</a>",""));
System.out.println("网址:"+mt3.group().replaceAll("href=|>",""));
String t=mt2.group().replaceAll(">|</a>","");
String u=mt3.group().replaceAll("href=|>","");
al.add(new ArticleList(t,u));
}

}

}//end while

for(int i=0;i<al.size();i++)
System.out.println(al.get(i));

System.out.println("共有"+al.size()+"个结果");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐