我写的,没有优化过代码的,大家各自写一个,看谁的跑的快,代码精简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();
} 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 +"秒"); }}
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 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 +"秒");
}}
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+"个图片.");
}}
其实很简单
正则表达 d\\S*\\.gif
d 开头,紧跟0或多个非空白字符+.gif