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

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

作者:陈世佳  编写时间:2018-4-15

创建Reptile类,编写如下java代码。

更改URL url = new URL("http://www.sj33.cn/");中的http://www.sj33.cn/为您想要访问的网址。

更改String filePath = "e:/download";中的e:/download为您想要保存的路径。

然后运行即可。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.lang.String;

public class Reptile {

    public static void main(String[] args) throws Exception {
        //目标URL
        URL url = new URL("http://www.kankan.com/");
        //访问编码
        String enCoded = "utf-8";
        //设置链接的正则表达式
        String str = "(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]";
        //使用getStringByWeb(url,enCoded,str)获取url中的链接的集合
        List<String> list = getStringByWeb(url,enCoded,str);
        System.out.println("\n<##资源搜集完成##>\n正在下载资源...");
        System.out.println("资源数:"+list.size()+"");
        for(String Url:list){
            //设置储存到本地的路径
            String filePath = "e:/download";
            //尝试存储Url中的文件到filePath路径下
            if(saveUrlAs(Url, filePath,"GET")==1)
                System.out.println("Successfully obtaining " + Url.substring(Url.lastIndexOf("/")).substring(1) +" from "+ Url);
        }
    }

    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;
    }

    public static int saveUrlAs(String url,String filePath,String method){
        File file=new File(filePath);
        //判断文件夹是否存在
        if (!file.exists())
        {
            //如果文件夹不存在,则创建新的的文件夹
            file.mkdirs();
        }
        FileOutputStream fileOut = null;
        HttpURLConnection conn = null;
        InputStream inputStream = null;
        try
        {
            // 建立链接
            URL httpUrl=new URL(url);
            conn=(HttpURLConnection) httpUrl.openConnection();
            //以Post方式提交表单,默认get方式
            conn.setRequestMethod(method);
            conn.setDoInput(true);
            conn.setDoOutput(true);
            // post方式不能使用缓存
            conn.setUseCaches(false);
            //连接指定的资源
            conn.connect();
            //获取网络输入流
            inputStream=conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(inputStream);
            //设置文件保存路径(注意文件保存路径的后面一定要加上文件的名称)
            //url.substring(url.lastIndexOf("/"))获取文件名称
            String fileAdress = filePath+url.substring(url.lastIndexOf("/"));
            System.out.println(fileAdress);
            //保存文件
            fileOut = new FileOutputStream(fileAdress);
            BufferedOutputStream bos = new BufferedOutputStream(fileOut);
            byte[] buf = new byte[4096];
            int length = bis.read(buf);
            //保存文件
            while(length != -1)
            {
                bos.write(buf, 0, length);
                length = bis.read(buf);
            }
            bos.close();
            bis.close();
            conn.disconnect();
        } catch (Exception e)
        {
//          e.printStackTrace();
            System.out.println("Failed obtaining resource from " + url);
            return 0;
        }
        return 1;
    }
}  


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

作者:陈世佳  编写时间:2018-4-15方法如下:    步骤一:建立java项目,导mysql-connector-java-5.1.26-bin.jar包,如果没有改jar包,可点击jar包下...
  • csj41352
  • csj41352
  • 2018-04-15 10:40:18
  • 90

网页爬取爬虫

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

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

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

Scrapy基本功能测试项目

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

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

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

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

最近在学习python,顺便写一个爬取网页中图片的程序练练手。 主要分为两个过程: 第一,从给定域名的网页中爬取图片的链接 第二,读取链接对应的图片,保存到本地 第一个过程需要导入ut...
  • Jaster_wisdom
  • Jaster_wisdom
  • 2016-10-15 21:13:23
  • 9236

Teleport Ultra网页爬取工具(破解版)

  • 2018年03月30日 16:38
  • 1017KB
  • 下载

python爬虫: 从 指定路径 爬取 文件

实现代码# coding=utf-8 import os import urllib import logging import sys# logging配置 logging.basicConfig(...
  • JNingWei
  • JNingWei
  • 2017-10-15 10:02:19
  • 900

linux下载指定网址文件 wget

wget的使用形式是: wget [参数列表] URL 首先来介绍一下wget的主要参数: · -b:让wget在后台运行,记录文件写在当前目录下”wget-log”文件中; · -t [n...
  • huang800336
  • huang800336
  • 2015-03-17 10:59:52
  • 397

python3.4爬取网络图片

  • 2014年09月30日 19:40
  • 451B
  • 下载
收藏助手
不良信息举报
您举报文章:使用java语言从指定网址中爬取文件到本地
举报原因:
原因补充:

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