Java:读取网站的所有URL地址
2010-12-10 16:28
381 查看
package com.happy.url;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Urls {
private String startUrl; // 开始采集网址
String urlContent;
String ContentArea;
private String strAreaBegin, strAreaEnd; // 采集区域开始采集字符串和结束采集字符串
private String stringInUrl, stringNotInUrl;
String strContent;// 获得的采集内容
String[] allUrls; // 采集到的所有网址
private String regex; // 采集规则
UrlAndTitle urlAndTitle = new UrlAndTitle(); // 存储网址和标题
public static void main(String[] args) {
Urls myurl = new Urls("<body", "/body>");
myurl.getStartUrl("http://www.baidu.com/");
// myurl.getStartUrl("http://www.126.com/");
myurl.getUrlContent();
myurl.getContentArea();
myurl.getStringInUrl("http://www.baidu.com/");
// myurl.getStringInUrl("http://www.126.com/");
myurl.getStringNotInUrl("google");
myurl.Urls();
}
// 初始化构造函数 strAreaBegin 和strAreaEnd
public Urls(String strAreaBegin, String strAreaEnd) {
this.strAreaBegin = strAreaBegin;
this.strAreaEnd = strAreaEnd;
}
//
public void Urls() {
int i = 0;
// String regex ="<a
// href="?'?http://[a-zA-Z0-9]+/.[a-zA-Z0-9]+/.[a-zA-Z]+/?[/.?[/S|/s]]+[a>]$";
final String regex = "<a.*?/a>";
// String regex ="http://.*?>";
final Pattern pt = Pattern.compile(regex);
final Matcher mt = pt.matcher(ContentArea);
while (mt.find()) {
System.out.println(mt.group());
i++;
// 获取标题
final Matcher title = Pattern.compile(">.*?</a>").matcher(
mt.group());
while (title.find()) {
System.out.println("标题:"
+ title.group().replaceAll(">|</a>", ""));
}
// 获取网址
final Matcher myurl = Pattern.compile("href=.*?>").matcher(
mt.group());
while (myurl.find()) {
System.out.println("网址:"
+ myurl.group().replaceAll("href=|>", ""));
}
System.out.println();
}
System.out.println("共有" + i + "个符合结果");
}
// 获得开始采集网址
public void getStartUrl(String startUrl) {
this.startUrl = startUrl;
}
// 获得网址所在内容;
public void getUrlContent() {
StringBuffer is = new StringBuffer();
try {
URL myUrl = new URL(startUrl);
BufferedReader br = new BufferedReader(new InputStreamReader(myUrl
.openStream()));
String s;
while ((s = br.readLine()) != null) {
is.append(s);
}
urlContent = is.toString();
} catch (Exception e)
{
System.out.println("网址文件未能输出");
e.printStackTrace();
}
}
// 获得网址所在的匹配区域部分
public void getContentArea() {
int pos1 = 0, pos2 = 0;
pos1 = urlContent.indexOf(strAreaBegin) + strAreaBegin.length();
pos2 = urlContent.indexOf(strAreaEnd, pos1);
ContentArea = urlContent.substring(pos1, pos2);
}
// 以下两个函数获得网址应该要包含的关键字及不能包含的关键字
// 这里只做初步的实验。后期,保护的关键字及不能包含的关键字应该是不只一个的。
public void getStringInUrl(String stringInUrl) {
this.stringInUrl = stringInUrl;
}
public void getStringNotInUrl(String stringNotInUrl) {
this.stringNotInUrl = stringNotInUrl;
}
// 获取采集规则
// 获取url网址
public void getUrl() {
}
public String getRegex() {
return regex;
}
class UrlAndTitle {
String myURL;
String title;
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Urls {
private String startUrl; // 开始采集网址
String urlContent;
String ContentArea;
private String strAreaBegin, strAreaEnd; // 采集区域开始采集字符串和结束采集字符串
private String stringInUrl, stringNotInUrl;
String strContent;// 获得的采集内容
String[] allUrls; // 采集到的所有网址
private String regex; // 采集规则
UrlAndTitle urlAndTitle = new UrlAndTitle(); // 存储网址和标题
public static void main(String[] args) {
Urls myurl = new Urls("<body", "/body>");
myurl.getStartUrl("http://www.baidu.com/");
// myurl.getStartUrl("http://www.126.com/");
myurl.getUrlContent();
myurl.getContentArea();
myurl.getStringInUrl("http://www.baidu.com/");
// myurl.getStringInUrl("http://www.126.com/");
myurl.getStringNotInUrl("google");
myurl.Urls();
}
// 初始化构造函数 strAreaBegin 和strAreaEnd
public Urls(String strAreaBegin, String strAreaEnd) {
this.strAreaBegin = strAreaBegin;
this.strAreaEnd = strAreaEnd;
}
//
public void Urls() {
int i = 0;
// String regex ="<a
// href="?'?http://[a-zA-Z0-9]+/.[a-zA-Z0-9]+/.[a-zA-Z]+/?[/.?[/S|/s]]+[a>]$";
final String regex = "<a.*?/a>";
// String regex ="http://.*?>";
final Pattern pt = Pattern.compile(regex);
final Matcher mt = pt.matcher(ContentArea);
while (mt.find()) {
System.out.println(mt.group());
i++;
// 获取标题
final Matcher title = Pattern.compile(">.*?</a>").matcher(
mt.group());
while (title.find()) {
System.out.println("标题:"
+ title.group().replaceAll(">|</a>", ""));
}
// 获取网址
final Matcher myurl = Pattern.compile("href=.*?>").matcher(
mt.group());
while (myurl.find()) {
System.out.println("网址:"
+ myurl.group().replaceAll("href=|>", ""));
}
System.out.println();
}
System.out.println("共有" + i + "个符合结果");
}
// 获得开始采集网址
public void getStartUrl(String startUrl) {
this.startUrl = startUrl;
}
// 获得网址所在内容;
public void getUrlContent() {
StringBuffer is = new StringBuffer();
try {
URL myUrl = new URL(startUrl);
BufferedReader br = new BufferedReader(new InputStreamReader(myUrl
.openStream()));
String s;
while ((s = br.readLine()) != null) {
is.append(s);
}
urlContent = is.toString();
} catch (Exception e)
{
System.out.println("网址文件未能输出");
e.printStackTrace();
}
}
// 获得网址所在的匹配区域部分
public void getContentArea() {
int pos1 = 0, pos2 = 0;
pos1 = urlContent.indexOf(strAreaBegin) + strAreaBegin.length();
pos2 = urlContent.indexOf(strAreaEnd, pos1);
ContentArea = urlContent.substring(pos1, pos2);
}
// 以下两个函数获得网址应该要包含的关键字及不能包含的关键字
// 这里只做初步的实验。后期,保护的关键字及不能包含的关键字应该是不只一个的。
public void getStringInUrl(String stringInUrl) {
this.stringInUrl = stringInUrl;
}
public void getStringNotInUrl(String stringNotInUrl) {
this.stringNotInUrl = stringNotInUrl;
}
// 获取采集规则
// 获取url网址
public void getUrl() {
}
public String getRegex() {
return regex;
}
class UrlAndTitle {
String myURL;
String title;
}
}
相关文章推荐
- PHP读取指定URL网页地址中的所有链接
- java通过一个url读取网站的源代码 储存到本地文件中
- java使用Url获取sql文件的地址读取sql
- Java实现获取Web上所有路径下资源文件的URL地址
- java通过一个url读取网站的源代码 储存到本地文件中
- 毛超帅 使用 jquery.qrcode.js 生成网站地址url二维码图片______软件开发-JAVA
- 【编程技巧】JAVA读取url地址中的文本内容
- JAVA从url读取WWW网络资源
- jquery中邮箱地址 URL网站地址正则验证实例代码
- 【转】【转】一个一年工作经验的java工程师从工作初到今天的所有收藏的学习java的网站(有些很经典
- java使用HttpURLConnection检索网站时403错误处理方式
- java根据图片的url地址下载图片到本地
- jquery中邮箱地址 URL网站地址正则验证实例代码
- 【转】用纯JAVA语言编程读取MAC地址的实现
- FormatRemoteUrl函数之asp实现格式化成当前网站完整的URL-将相对地址转换为绝对地址的代码
- FormatRemoteUrl函数之asp实现格式化成当前网站完整的URL-将相对地址转换为绝对地址的代码
- java读取文件夹下的所有文件夹和文件
- JAVA读取文件夹中CSV的URL并下载图片
- 解决java用url中读取html源码时的乱码问题
- Java 利用 HttpURLConnection 读取页面 返回字节流(生成静态页面)