http://www.cma.gov.cn/tqyb/img/weather/b_50x46/抓取以上URL下的所有以b开头 .gif结尾的图片,并存入到D:/test/目录下

解决方案 »

  1.   

    我写的,没有优化过代码的,大家各自写一个,看谁的跑的快,代码精简package ant.util;public class GetImagesFromWebSite {
    public static final String strURL = "http://www.cma.gov.cn/tqyb/img/weather/b_50x46/";
    Pattern p = Pattern.compile("b\\d+\\.gif");
    Map FileMap = new HashMap();
    String strDir = "D:\\test";

    public void startGetImages() {
    try {
    String line = null;
    URL url = new URL(strURL);
    URLConnection conn = url.openConnection();
    BufferedReader reader = new BufferedReader(new InputStreamReader(
    conn.getInputStream()));
    while ( (line = reader.readLine()) != null ) {
    Matcher m = p.matcher(line);
    String gifFileName = null;
    while(m.find()){
    gifFileName = m.group();
    System.out.println(gifFileName);
    byte[] gifData = null;
    DataInputStream dis = new DataInputStream(new URL(strURL+gifFileName).openConnection().getInputStream());
    gifData = new byte[dis.available()];
    dis.read(gifData);
    dis.close();

    File gifFile = new File(strDir,gifFileName);
    gifFile.createNewFile();
    FileOutputStream fos = new FileOutputStream(gifFile);
    fos.write(gifData);
    fos.flush();
    fos.close();
    }
    }
    reader.close();
    } catch (MalformedURLException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }

    } public static void main(String[] args) {
    GetImagesFromWebSite getImagesFromWebSite = new GetImagesFromWebSite();
    long startTime = System.currentTimeMillis();
    getImagesFromWebSite.startGetImages();
    long endTime = System.currentTimeMillis();
    System.out.println("抓取图片结束......\n"+"共耗时:"+ (endTime-startTime)/1000.0 +"秒");
    }}
      

  2.   

    package ant.util;
    public class GetImagesFromWebSite {
    public static final String strURL = "http://www.cma.gov.cn/tqyb/img/weather/b_50x46/";
    Pattern p = Pattern.compile("b\\d+\\.gif");
    String strDir = "D:\\test";
    int count = 0;

    public void startGetImages() {
    try {
    String line = null;
    URL url = new URL(strURL);
    URLConnection conn = url.openConnection();
    BufferedReader reader = new BufferedReader(new InputStreamReader(
    conn.getInputStream()));
    while ( (line = reader.readLine()) != null ) {
    Matcher m = p.matcher(line);
    String gifFileName = null;
    String oldGifFileName = null;
    byte[] gifData = null;
    while(m.find()){
    gifFileName = m.group();
    if( gifFileName.equals(oldGifFileName) ){
    continue ;
    }
    oldGifFileName = gifFileName;

    System.out.println(gifFileName);
    System.out.println(strURL+gifFileName);

    DataInputStream dis = new DataInputStream(new URL(strURL+gifFileName).openConnection().getInputStream());
    gifData = new byte[dis.available()];
    dis.read(gifData);
    dis.close();

    File gifFile = new File(strDir,gifFileName);
    gifFile.createNewFile();
    FileOutputStream fos = new FileOutputStream(gifFile);
    fos.write(gifData);
    fos.flush();
    fos.close();
    count++ ;
    }
    }
    reader.close();
    } catch (MalformedURLException e) {
    e.printStackTrace();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }


    } public static void main(String[] args) {
    System.out.println("开始抓取图片......");
    GetImagesFromWebSite getImagesFromWebSite = new GetImagesFromWebSite();
    long startTime = System.currentTimeMillis();
    getImagesFromWebSite.startGetImages();
    long endTime = System.currentTimeMillis();
    System.out.println("\n抓取图片结束......\n"+"共耗时:"+ (endTime-startTime)/1000.0 +"秒,");
    System.out.println("共"+getImagesFromWebSite.count+"个图片.");
    }}
      

  3.   

    b*.gif
    其实很简单
    正则表达 d\\S*\\.gif
    d 开头,紧跟0或多个非空白字符+.gif