现在电影资源越来越少了,今天想看看吸血鬼日记,结果网上搜出的网址不支持迅雷批量下载,我一个一个点,很累。于是就看看网页源代码发现影片都以FTP开头,rmvb结尾。于是就写了个小程序能够获取网页中所有的下载地址。废话不多说了,下面看代码
package com.cc.getMovie;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
public class MovieTest {
public static void main (String args[]) throws Exception {
String s = "http://www.dytt8.net/html/tv/hytv/20110829/33924.html";
MovieTest mt = new MovieTest();
mt.getUrl(s);
}
public List<String> splitString(String str){//将获取到的网页代码用"<"标签隔开
String[] strs = str.split("<");
List <String> list = new ArrayList<String>();
for (int i = 0; i < strs.length; i++) {
list.add(strs[i]);
}
return list;
}
public List<String> registFtp(List<String> list){//将列表中存的代码通过判定截取出来"
List<String> lists = new ArrayList<String>();
for (String str : list) {
int begin = str.indexOf("ftp:");//查找以ftp开头的索引位置
int end = str.indexOf(".rmvb");//查找以rmvb结尾的索引位置
if(begin!=-1&&end!=-1){//判断取值
String tmp = str.substring(begin, end);//截取字符串,由于用了indexOf,没有rmvb结尾
tmp = tmp.concat(".rmvb");//加上后缀名rmvb
System.out.println(tmp);//打印出所有的地址
lists.add(tmp);
}
}
return list;
}
public String getUrl(String ftp){//获取远端网页的html代码
String str = "";
try {
URLurl = new URL(ftp);
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
InputStreamReader reader = new InputStreamReader(in, "gbk");
BufferedReader br = new BufferedReader(reader);
String data = br.readLine();
while (data != null) {
str = str.concat(data);
data = br.readLine();
}
br.close();
in.close();
MovieTest mt = new MovieTest();
mt.registFtp(mt.splitString(str));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
}
不大会正则,要不应该更加的简单些,就是利用java中string的api做的,比较简陋。
不想再扩展了,到时改程序就行了,要是扩展的话,有以下几点扩展的
1,写一个ui界面。然后输入网址就能返回地址
2,改用正则估计要快点
3,字符编码。这里用的是最常见的gbk。
好了,就说到这里,反正是个工具类,就是为了方便下载电影用。留作纪念了