Warning: Constant UC_APPID already defined, this will be an error in PHP 9 in C:\wwwroot\9et.cn\bbs\config.inc.php on line 83
Warning: htmlspecialchars(): Charset "gbk" is not supported, assuming UTF-8 in C:\wwwroot\9et.cn\bbs\include\common.inc.php on line 84
Warning: Constant FORMHASH already defined, this will be an error in PHP 9 in C:\wwwroot\9et.cn\bbs\include\common.inc.php on line 254
Warning: Undefined variable $uchome in C:\wwwroot\9et.cn\bbs\include\common.inc.php on line 405
Warning: Trying to access array offset on null in C:\wwwroot\9et.cn\bbs\include\common.inc.php on line 405
Warning: Undefined variable $feedpostnum in C:\wwwroot\9et.cn\bbs\include\common.inc.php on line 413
Warning: Undefined array key "types" in C:\wwwroot\9et.cn\bbs\viewthread.php on line 115
Warning: Trying to access array offset on null in C:\wwwroot\9et.cn\bbs\viewthread.php on line 115
Warning: Undefined array key "types" in C:\wwwroot\9et.cn\bbs\viewthread.php on line 116
Warning: Trying to access array offset on null in C:\wwwroot\9et.cn\bbs\viewthread.php on line 116
Warning: Undefined variable $ismoderator in C:\wwwroot\9et.cn\bbs\viewthread.php on line 184
杰特论坛 - Powered by Discuz! Board

标题: JAVA实现数据采集程序基本原理 [打印本页]
作者: ぺ灬cc果冻ル 时间: 2009-11-10 15:17 标题: JAVA实现数据采集程序基本原理
项目需要,非要采集别人网站的MP3,没办法只能做。。好在成功了,分享一下心得。。
同样的方法,采集FALSH,文本都可以的。。
首先要采集别人的东西就要登陆别人的网页查看源代码找到下载地址,其实就这么简单。。
那就只要先定义一个方法让程序可以自动侦测到网页的源代码了。。
程序代码:
程序代码:
public static String getWebContent(String domain){
System.out.println("开始读取内容...("+domain+")");
StringBuffer sb = new StringBuffer();
try{
java.net.URL url = new java.net.URL(domain);
BufferedReader in =
new BufferedReader(new InputStreamReader(url.openStream()));
String line;
while((line = in.readLine()) != null){
sb.append(line);
}
in.close();
}catch(Exception e) { // Report any errors that arise
sb.append(e.toString());
System.err.println(e);
System.err.println("Usage: java HttpClient <URL> [<filename>]");
}
return sb.toString();
}
这个方法以网址为参数会返回那个网页的源代码,接着分析对方网页的超链接。。
凡是提供下载的必须提供链接,哈哈,废话。。我们只要根据网页源代码提取到超链接地址
然后村成TXT,直接用FLASHGET下载就行了
那么怎么分析出网页的超链接?
当然是用正则表达式了于是有了下面这个方法
程序代码:
程序代码:
public static String matcherStr(String str, String cp, String s){
if(str==null || str.equals("")){
return "";
}
String txt = new String();
txt = str;
if(str!=null && !str.equals("")){
txt = str;
Pattern p = Pattern.compile(cp,2); //参数2表示大小写不区分
Matcher m = p.matcher(txt);
StringBuffer sb = new StringBuffer();
int i=0;
boolean result = m.find();
//使用循环将句子里所有匹配的内容找出并替换再将内容加到sb里
while(result) {
i++;
sb.append(m.group());
sb.append(s);
//继续查找下一个匹配对象
result = m.find();
}
txt = String.valueOf(sb);
}else{
txt = "";
}
return txt;
}
接下来就是分析被采集网站的超接连归责,写出正确的正则表达式用上面的方法匹配出来一次匹配一点,不行就再匹配,直到取出网址,存在StringBuffer里面,等都弄出来了
或者打印另存成txt或者直接用程序存成TXT
只要打开FLASHGET,然后开着TXT 全选,复制,就会自动将地址添加到FLASHGET里面了
批量下吧,兄弟。。。。