package my.Browser;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.jdic.browser.*;public class Urls {
private String startUrl; // 开始采集网址 String urlContent; String ContentArea; private String strAreaBegin, strAreaEnd; // 采集区域开始采集字符串和结束采集字符串 @SuppressWarnings("unused")
private String stringInUrl, stringNotInUrl; String strContent;// 获得的采集内容 String[] allUrls; // 采集到的所有网址 private String regex; // 采集规则// UrlAndTitle urlAndTitle = new UrlAndTitle(); // 存储网址和标题 JFrame Zhankaiframe;
JPanel jTianchong1 = new JPanel();
JButton jButton1 = new JButton();
JPanel Panel1 = new JPanel();
JPanel Panel2 = new JPanel();
int j=0;
String[] buff=new String[50];
WebBrowser Browser1 = null;
WebBrowser Browser2=null;
public static void main(String[] args)
{
//int j=0;
Urls myurl = new Urls("<body", "/body>");
myurl.getStartUrl("http://www.baidu.com/");
myurl.getUrlContent();
myurl.getContentArea();
myurl.getStringInUrl("http://www.baidu.com/");
myurl.getStringNotInUrl("google");
myurl.ShowUrls();//获取超链接的网址 ShowUrls()是方法
myurl.Kuangjia();
myurl.Twoweb();
} // 初始化构造函数 strAreaBegin 和strAreaEnd public Urls(String strAreaBegin, String strAreaEnd) {
this.strAreaBegin = strAreaBegin;//"<body"
this.strAreaEnd = strAreaEnd;// "/body>"
}//把www.baidu.com上所有超链接存到buff[i]中
public void ShowUrls()
{
//String[] buff=new String[50];
int i=0;//j是网页中url的个数
final String regex = "<a.*?/a>";//<a开始 /a>结束 *?代表中间出现0次1次或多次
final Pattern pt = Pattern.compile(regex);
final Matcher mt = pt.matcher(ContentArea);
while (mt.find()) {//public boolean find() 尝试查找与该模式匹配的输入序列的下一个子序列。
// 获取标题
final Matcher title = Pattern.compile(">.*?</a>").matcher(mt.group());
while (title.find()) {
String biaoti=title.group().replaceAll(">|</a>| ", "");
} // 获取网址
String mm="(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?";
final Matcher myurl = Pattern.compile(mm).matcher(mt.group());//匹配"href="到“>”间的内容,即网址
while (myurl.find()) {
String chaolianjie= myurl.group().replaceAll("href=|>", "");
buff[i]=chaolianjie;
i++;
}
}
}
//初始化框架
public void Kuangjia(){
Zhankaiframe= new JFrame("NUPT WDQ WEBBROWSER 展开");
Zhankaiframe.setSize(900,900);
BorderLayout borderLayout1 = new BorderLayout();
jTianchong1.setLayout(new BorderLayout());
jTianchong1.setPreferredSize(new Dimension(40, 40));
Zhankaiframe.add(jTianchong1, BorderLayout.NORTH);
jButton1.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(0,
2, 0, 2),
new EtchedBorder()));
jButton1.setMaximumSize(new Dimension(60, 25));
jButton1.setMinimumSize(new Dimension(60, 25));
jButton1.setPreferredSize(new Dimension(70, 50));
jButton1.setToolTipText("显示下两个超链接");
jButton1.setText("NEXT");
jButton1.setEnabled(true);
jTianchong1.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEtchedBorder(),
BorderFactory.createEmptyBorder(2, 0, 2, 0)));
jTianchong1.add(jButton1, BorderLayout.EAST);
//按键触发
jButton1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Twoweb();
}
});
Panel1.setLayout(new BorderLayout(1,1));
Panel1.setPreferredSize(new Dimension(300, 300));
Panel2.setLayout(new BorderLayout(1,1));
Panel2.setPreferredSize(new Dimension(300, 300));
//Zhankaiframe.add(Panel1, BorderLayout.CENTER);
//Zhankaiframe.add(Panel2, BorderLayout.SOUTH);
//Panel1.add(Browser1, BorderLayout.CENTER);
//Panel2.add(Browser2, BorderLayout.CENTER);
//Zhankaiframe.add(Panel2, BorderLayout.CENTER);
// Zhankaiframe.setVisible(true);
}
//打开两个网页public void Twoweb(){
Panel1.removeAll();
Panel2.removeAll();
//Panel1.resize(300,300);
// System.out.println("remove");
URL curUrl = null;
URL curUrl2 = null;
try{
curUrl= new URL(buff[j]);
curUrl2= new URL(buff[j+1]);
Browser1=new WebBrowser(curUrl);
Browser2 = new WebBrowser(curUrl2);
// Panel1.setLayout(new BorderLayout(1,1));
//Panel1.setPreferredSize(new Dimension(300, 300));
// Panel2.setLayout(new BorderLayout(1,1));
//Panel2.setPreferredSize(new Dimension(300, 300));
Panel1.add(Browser1, BorderLayout.CENTER);
Panel2.add(Browser2, BorderLayout.CENTER);
j=j+2;
System.out.println(j);
}catch (Exception e){
System.out.println("wrong");
System.out.println(e.toString());
}
Zhankaiframe.add(Panel1, BorderLayout.CENTER);
Zhankaiframe.add(Panel2, BorderLayout.SOUTH);
Zhankaiframe.setVisible(true);
//System.out.println(buff[j]);
}
// 获得开始采集网址
public void getStartUrl(String startUrl)
{
this.startUrl = startUrl;//http://www.baidu.com/ 是startUrl
} // 获得网址所在内容;
public void getUrlContent()
{ StringBuffer is = new StringBuffer();
try {
URL myUrl = new URL(startUrl);//java.net
BufferedReader br = new BufferedReader(new InputStreamReader(myUrl
.openStream())); //java.io从字符输入流中读取文本 //java.io 字节流通向字符流的桥梁
String s;
while ((s = br.readLine()) != null) {
is.append(s);
}
urlContent = is.toString();//url内容 toString返回此序列中数据的字符串表示形式
} catch (Exception e) {
System.out.println("网址文件未能输出");
e.printStackTrace();
} } // 获得网址所在的匹配区域部分
public void getContentArea()
{
int pos1 = 0, pos2 = 0;
pos1 = urlContent.indexOf(strAreaBegin) + strAreaBegin.length();//indexOf返回"<body"在urlContent中第一次出现处的索引
pos2 = urlContent.indexOf(strAreaEnd, pos1);//从pos1处开始,返回第一次出现的"/<body"在urlContent中的索引
ContentArea = urlContent.substring(pos1, pos2);//返回一个新字符串,它是urlContent的一个子字符串。该子字符串从指定的 pos1 处开始,一直到索引 pos2- 1 处的字符。
} //ContentArea是"<body"到"/<body"间的字符串 // 以下两个函数获得网址应该要包含的关键字及不能包含的关键字 public void getStringInUrl(String stringInUrl)
{
this.stringInUrl = stringInUrl;//"http://www.baidu.com/" } public void getStringNotInUrl(String stringNotInUrl)
{
this.stringNotInUrl = stringNotInUrl;
}
}
打开网页java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.jdic.browser.*;public class Urls {
private String startUrl; // 开始采集网址 String urlContent; String ContentArea; private String strAreaBegin, strAreaEnd; // 采集区域开始采集字符串和结束采集字符串 @SuppressWarnings("unused")
private String stringInUrl, stringNotInUrl; String strContent;// 获得的采集内容 String[] allUrls; // 采集到的所有网址 private String regex; // 采集规则// UrlAndTitle urlAndTitle = new UrlAndTitle(); // 存储网址和标题 JFrame Zhankaiframe;
JPanel jTianchong1 = new JPanel();
JButton jButton1 = new JButton();
JPanel Panel1 = new JPanel();
JPanel Panel2 = new JPanel();
int j=0;
String[] buff=new String[50];
WebBrowser Browser1 = null;
WebBrowser Browser2=null;
public static void main(String[] args)
{
//int j=0;
Urls myurl = new Urls("<body", "/body>");
myurl.getStartUrl("http://www.baidu.com/");
myurl.getUrlContent();
myurl.getContentArea();
myurl.getStringInUrl("http://www.baidu.com/");
myurl.getStringNotInUrl("google");
myurl.ShowUrls();//获取超链接的网址 ShowUrls()是方法
myurl.Kuangjia();
myurl.Twoweb();
} // 初始化构造函数 strAreaBegin 和strAreaEnd public Urls(String strAreaBegin, String strAreaEnd) {
this.strAreaBegin = strAreaBegin;//"<body"
this.strAreaEnd = strAreaEnd;// "/body>"
}//把www.baidu.com上所有超链接存到buff[i]中
public void ShowUrls()
{
//String[] buff=new String[50];
int i=0;//j是网页中url的个数
final String regex = "<a.*?/a>";//<a开始 /a>结束 *?代表中间出现0次1次或多次
final Pattern pt = Pattern.compile(regex);
final Matcher mt = pt.matcher(ContentArea);
while (mt.find()) {//public boolean find() 尝试查找与该模式匹配的输入序列的下一个子序列。
// 获取标题
final Matcher title = Pattern.compile(">.*?</a>").matcher(mt.group());
while (title.find()) {
String biaoti=title.group().replaceAll(">|</a>| ", "");
} // 获取网址
String mm="(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?";
final Matcher myurl = Pattern.compile(mm).matcher(mt.group());//匹配"href="到“>”间的内容,即网址
while (myurl.find()) {
String chaolianjie= myurl.group().replaceAll("href=|>", "");
buff[i]=chaolianjie;
i++;
}
}
}
//初始化框架
public void Kuangjia(){
Zhankaiframe= new JFrame("NUPT WDQ WEBBROWSER 展开");
Zhankaiframe.setSize(900,900);
BorderLayout borderLayout1 = new BorderLayout();
jTianchong1.setLayout(new BorderLayout());
jTianchong1.setPreferredSize(new Dimension(40, 40));
Zhankaiframe.add(jTianchong1, BorderLayout.NORTH);
jButton1.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(0,
2, 0, 2),
new EtchedBorder()));
jButton1.setMaximumSize(new Dimension(60, 25));
jButton1.setMinimumSize(new Dimension(60, 25));
jButton1.setPreferredSize(new Dimension(70, 50));
jButton1.setToolTipText("显示下两个超链接");
jButton1.setText("NEXT");
jButton1.setEnabled(true);
jTianchong1.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEtchedBorder(),
BorderFactory.createEmptyBorder(2, 0, 2, 0)));
jTianchong1.add(jButton1, BorderLayout.EAST);
//按键触发
jButton1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Twoweb();
}
});
Panel1.setLayout(new BorderLayout(1,1));
Panel1.setPreferredSize(new Dimension(300, 300));
Panel2.setLayout(new BorderLayout(1,1));
Panel2.setPreferredSize(new Dimension(300, 300));
//Zhankaiframe.add(Panel1, BorderLayout.CENTER);
//Zhankaiframe.add(Panel2, BorderLayout.SOUTH);
//Panel1.add(Browser1, BorderLayout.CENTER);
//Panel2.add(Browser2, BorderLayout.CENTER);
//Zhankaiframe.add(Panel2, BorderLayout.CENTER);
// Zhankaiframe.setVisible(true);
}
//打开两个网页public void Twoweb(){
Panel1.removeAll();
Panel2.removeAll();
//Panel1.resize(300,300);
// System.out.println("remove");
URL curUrl = null;
URL curUrl2 = null;
try{
curUrl= new URL(buff[j]);
curUrl2= new URL(buff[j+1]);
Browser1=new WebBrowser(curUrl);
Browser2 = new WebBrowser(curUrl2);
// Panel1.setLayout(new BorderLayout(1,1));
//Panel1.setPreferredSize(new Dimension(300, 300));
// Panel2.setLayout(new BorderLayout(1,1));
//Panel2.setPreferredSize(new Dimension(300, 300));
Panel1.add(Browser1, BorderLayout.CENTER);
Panel2.add(Browser2, BorderLayout.CENTER);
j=j+2;
System.out.println(j);
}catch (Exception e){
System.out.println("wrong");
System.out.println(e.toString());
}
Zhankaiframe.add(Panel1, BorderLayout.CENTER);
Zhankaiframe.add(Panel2, BorderLayout.SOUTH);
Zhankaiframe.setVisible(true);
//System.out.println(buff[j]);
}
// 获得开始采集网址
public void getStartUrl(String startUrl)
{
this.startUrl = startUrl;//http://www.baidu.com/ 是startUrl
} // 获得网址所在内容;
public void getUrlContent()
{ StringBuffer is = new StringBuffer();
try {
URL myUrl = new URL(startUrl);//java.net
BufferedReader br = new BufferedReader(new InputStreamReader(myUrl
.openStream())); //java.io从字符输入流中读取文本 //java.io 字节流通向字符流的桥梁
String s;
while ((s = br.readLine()) != null) {
is.append(s);
}
urlContent = is.toString();//url内容 toString返回此序列中数据的字符串表示形式
} catch (Exception e) {
System.out.println("网址文件未能输出");
e.printStackTrace();
} } // 获得网址所在的匹配区域部分
public void getContentArea()
{
int pos1 = 0, pos2 = 0;
pos1 = urlContent.indexOf(strAreaBegin) + strAreaBegin.length();//indexOf返回"<body"在urlContent中第一次出现处的索引
pos2 = urlContent.indexOf(strAreaEnd, pos1);//从pos1处开始,返回第一次出现的"/<body"在urlContent中的索引
ContentArea = urlContent.substring(pos1, pos2);//返回一个新字符串,它是urlContent的一个子字符串。该子字符串从指定的 pos1 处开始,一直到索引 pos2- 1 处的字符。
} //ContentArea是"<body"到"/<body"间的字符串 // 以下两个函数获得网址应该要包含的关键字及不能包含的关键字 public void getStringInUrl(String stringInUrl)
{
this.stringInUrl = stringInUrl;//"http://www.baidu.com/" } public void getStringNotInUrl(String stringNotInUrl)
{
this.stringNotInUrl = stringNotInUrl;
}
}
打开网页java
Urls.this.setVisible(false);
Urls.this.setVisible(true);
达到刷新的效果
请问这是为什么呢??