TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
今天,偶尔看到有个国外网站每小时自动发布最新的代理服务器。
于是,就写了个程序,把它网站的代理服务器地址保存到本地,然后每小时执行一次。
程序是用java写的,原理就是抓取网页内容,然后分析其中的代码,保存在c:proxy.htm文件中。
每小时运行该java程序,是通过计划任务实现的,效果还不错。
如果能够从多个站点下载代理服务器,再加上能够验证代理服务器的有效性就比较完美了。
如果自己有服务器的话,就也可以每小时发布最新的代理服务器了。
java程序源代码如下:
??
/**
* 保存代理服务器地址到 c:proxy.htm 文件
* @web http://blog.csdn.net/cqq
* @author 慈勤强
* @version 1.00 05/02/01
*/
import java.net.*;
import java.io.*;
import java.util.regex.*;
import java.util.*;
public class JavaProxy {
public static void main(String[] args) throws Exception {
System.out.println("正在生成代理列表...
");
JavaProxy ou=new JavaProxy();
File f=new File("c:\proxy.htm");
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)));
String str=ou.getProxy1();
Pattern p=Pattern.compile("<li>");
String[] ss=p.split(str);
String strTmp="";
String str1="";
if(ss.length>1){
bw.write("<table width="90%" border="0" align="center" bgcolor="#F9F9F9"><tr><td>");
bw.write("<b>Last Modified:"+new Date().toLocaleString()+"</b><br> <br>");
for(int i=1;i<ss.length;i++){
strTmp=ss.substring(10,12); //Country
if(strTmp.equals("CN"))
strTmp="<font color=red><b>"+strTmp+"</b></font>";
str1=removeAllTag(ss);
bw.write(""+i+" "+strTmp+" "+str1+"<br>");
}
bw.write("</td></tr></table>");
}
bw.close();
System.out.println("完成");
System.exit(0);
}
private String getProxy1(){
int i=0;
try{
URL url=new URL("http://www.cybersyndrome.net/pla.HTML");
BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream()));
String s="";
StringBuffer sb=new StringBuffer("");
while((s=br.readLine())!=null) {
i++;
if(i>80&&i<89){
sb.append(s+"
");
}
}
br.close();
return sb.toString();
}catch(Exception e){
return "error open url" +e.toString();
}
}
public static String removeAllTag(String src) {
return src.replaceAll("<[^>]*>", "");
}
}
然后是javac JavaProxy.java
java JavaProxy
等待好结果吧。 |
|