作者:陈世佳 编写时间:2018-4-15
方法如下:
步骤一:建立java项目,导mysql-connector-java-5.1.26-bin.jar包,如果没有改jar包,可点击jar包下载,密码nsd6。
步骤二:在数据库建立url表结构如下:
CREATE TABLE `url` (
`url_id` varchar(500) NOT NULL,
`url` varchar(500) DEFAULT NULL,
`effective` varchar(1) DEFAULT NULL,
PRIMARY KEY (`url_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
步骤三:创建Reptile类,编写java代码,并更改jdbc()函数下的本地数据库链接,用户名及密码。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.sql.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Reptile {
static Statement statement;
static Connection conn;
public static void main(String[] args) throws Exception {
//目标URL
URL url = new URL("http://www.sj33.cn/");
//访问编码
String enCoded = "utf-8";
//设置链接的正则表达式
String st = "(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]";
//获取当地时间产生编号
long str = Calendar.getInstance().getTimeInMillis();
//定义一个本类的对象
Reptile reptile = new Reptile();
try {
//使用getStringByWeb(url,enCoded,st)获取url中的链接的集合
List<String> list = getStringByWeb(url,enCoded,st);
System.out.println("\n<##资源搜集完成##>\n正在储存资源...");
System.out.println("资源数:"+list.size());
//调用jdbc()与数据库建立连接
reptile.jdbc();
for(String Url:list){
str++;
String url_id = String.valueOf(str);
System.out.println("url_id:"+url_id);
System.out.println("url:"+Url);
//调用insertVdieo1()储存信息
reptile.insertVdieo1(url_id,Url);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static List<String> getStringByWeb(URL url,String enCoded,String str) throws IOException {
//从目标url中获取字符流到bufr
BufferedReader bufr = new BufferedReader(new InputStreamReader(url.openStream(),enCoded));
List<String> list = new ArrayList<String>();
Pattern p = Pattern.compile(str);
String line = null;
while((line=bufr.readLine())!=null){
System.out.println(line);
Matcher m = p.matcher(line);
//寻找文件链接
while(m.find()){
//将符合规则的数据存储到集合中。
list.add(m.group());
}
}
return list;
}
protected void jdbc(){
String url3 = "jdbc:mysql://localhost:3306/lc?useUnicode=true&characterEncoding=UTF8";
String username="root";
String password="root";
try{
Class.forName("com.mysql.jdbc.Driver"); //加载驱动程序
System.out.println("加载数据库驱动成功!");
conn = DriverManager.getConnection(url3, username ,password);
System.out.println("请求链接数据库成功!");
statement = conn.createStatement(); // statement用来执行SQL语句
} catch (Exception e) {
e.printStackTrace();
}
}
public void insertVdieo1(String url_id,String url){//向数据库插入信息
StringBuilder sqlstr = new StringBuilder("insert into url values");
sqlstr.append("('");
sqlstr.append(url_id);
sqlstr.append("','");
sqlstr.append(url);
sqlstr.append("','1");
sqlstr.append("');");
//产生一个order数据库插入命令
String order = sqlstr.toString();
try {
//执行命令
statement.executeUpdate(order);
System.out.println("Successfully "+order+ '\n');
} catch (Exception e) {
System.out.println("unsuccessfully "+order+"\n");
e.printStackTrace();
}
}
}
步骤四:运行即可