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()+"个结果");
}
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()+"个结果");
}
相关文章推荐
- java读取html文件并抽取a href相关连接和链接标题
- Cause: java.sql.SQLException: ORA-02018: 同名的数据库链接具有打开的连接
- 读取本机的Java运行环境和相关配置文件的内容 推荐
- JAVA之JDBC的相关问题(无法与SQLServer连接的解决)
- Java 与并发相关的系统原理 —— 参考博客文章链接汇总
- [推荐]--如何获取本地HTML文件的标题,超级链接。。。?
- JAVA之连接数据库及相关基本操作
- Java 数据库连接相关的类和接口:DriverManager,Connecttion,Statement, ResultSet
- java连接oracle数据库以及相关数据库操作
- java-httpclient通过title实现从baidu爬取相关网页链接
- java读写应用(为了舒适的阅读小说,将一个2Mtxt文档中的小说的每个章节抽取出来分别放在html文件中)
- Java 提取链接内容及标题
- tomcat java.lang.OutOfMemoryError: Java heap space 问题解决;Java垃圾回收机制详解和调优相关链接
- Java POI 读取Office excel (2003,2007)及相关jar包
- HR数据抽取:经过 Read Master Data 转换规则读取时间相关主属性数据HR数据抽取:通过 Read Master Data 转换规则读取时间相关主属性数据
- java连接数据库的jdbc技术之statement的相关操作及excute和executeUpdate的用法和区别
- java 链接ftp,相关操作
- java链接SQL Server 时到主机的TCP/IP 连接失败
- Java连接MySQL报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver(内附jre下载链接)
- java连接Excel数据库读取,写入,操纵Excel表格