使用java语言从指定网址中爬取文件到本地数据库

原创 2018年04月15日 10:40:18

作者:陈世佳  编写时间: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();
        }
    }

}


     步骤四:运行即可

使用java语言从指定网址中爬取文件到本地

作者:陈世佳  编写时间:2018-4-15创建Reptile类,编写如下java代码。更改URL url = new URL(&quot;http://www.sj33.cn/&quot;);中的h...
  • csj41352
  • csj41352
  • 2018-04-15 10:18:10
  • 79

jsoup实现爬取一个完整的网站,并保存到本地

  • 2014年03月06日 13:08
  • 252KB
  • 下载

Scrapy基本功能测试项目

  • 2016年08月11日 15:53
  • 21KB
  • 下载

网页爬虫聚焦爬虫JavaSpider 1.4版本

  • 2016年01月09日 17:49
  • 4.96MB
  • 下载

网页爬取爬虫

  • 2017年10月10日 10:23
  • 52KB
  • 下载

scrapy 爬取网站并存入数据库实例

实例,官方有个实例教程,算是比较简单了,然后后面有更详细的一项项解释,不过老实讲我还真是看不太懂,很多地方没有给出实例,所以我在网上找了一大堆资料后,弄了一个实例。现在列出来跟大家分享。 1.实...
  • leaderway
  • leaderway
  • 2016-08-22 00:56:33
  • 1549

python最简单的爬取图片并保存本地指定路径!

刚学python不久,所以先记录一个爬取图片的方式,并保存本地指定路径下。当然不一定会是最简单的方式,就是习惯这么起标题。但,肯定是我使用起来感觉最简单的。 需要单独安装的第三方模块有三个: ...
  • well2049
  • well2049
  • 2018-01-08 09:35:33
  • 1053

从本地数据库查询全国省市县信息

由于最近项目需要写了一次简单的从本地文件夹下获取数据库文件,通过将数据库文件保存到手机内存中查询数据库的方式来获得全国省市县信息,废话说完,直接代码和工具类。 1. 将本地数据库文件打开并读取到手机...
  • qq_27948659
  • qq_27948659
  • 2016-10-19 18:27:48
  • 274

Node.js 实现爬虫(3) —— 保存爬取的数据

将爬取的数据保存为文件,便于查阅
  • hard_hpp
  • hard_hpp
  • 2017-08-16 15:24:31
  • 768

python 爬取网页中的图片到本地

最近在学习python,顺便写一个爬取网页中图片的程序练练手。 主要分为两个过程: 第一,从给定域名的网页中爬取图片的链接 第二,读取链接对应的图片,保存到本地 第一个过程需要导入ut...
  • Jaster_wisdom
  • Jaster_wisdom
  • 2016-10-15 21:13:23
  • 9203
收藏助手
不良信息举报
您举报文章:使用java语言从指定网址中爬取文件到本地数据库
举报原因:
原因补充:

(最多只允许输入30个字)