您的位置:首页 > 编程语言 > Java开发

2016.08.19-java-关于网页图片的下载完整代码

2016-08-19 20:08 302 查看
package com.shi.onclass;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestUrl_copy {
String reg = "(http|https)://([\\w-/]*\\.)*[\\w-/]*\\.(jpg|png|gif)";
public List<String> parseUrl(String line){
List<String> urls = new ArrayList<>();
Pattern pattern = Pattern.compile(reg);
Matcher m = pattern.matcher(line);
if(m.find()){
urls.add(m.group());
}
return urls;
}
public List<String> parseFile(URL url){
BufferedReader br = null;
List<String> urls = null;
try {
br = new BufferedReader(new InputStreamReader(url.openStream()));
urls = new ArrayList<>();
String n = null;
while((n=br.readLine())!=null){
urls.addAll(parseUrl(n));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return urls;
}
public void download(String line){
InputStream is = null;
FileOutputStream fos = null;
URL url;
try {
url = new URL(line);
is = url.openStream();
fos = new FileOutputStream("D:\\a\\"+System.currentTimeMillis()+".jpg");
byte buf[] = new byte[1024];
int n =0;
while((n=is.read(buf))>0){
fos.write(buf, 0, n);
}
System.out.println("done");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
is.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
TestUrl_copy tc = new TestUrl_copy();
List<String> urls = null;
String url = "https://zhidao.baidu.com/shop/lottery";
try {
urls = tc.parseFile(new URL(url));
for(String str:urls){
tc.download(str);
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: