完成互联网照片爬虫,只需5秒迅速把全部网页页面上的照片全免


完成互联网照片爬虫,只需5秒迅速把全部网页页面上的照片全免费下载装包zip


大家常常必须用到互联网技术上的1些共享资源資源,照片便是資源的1种,如何把网页页面上的照片大批量免费下载下来?有时大家必须把网页页面上的照片免费下载下来,但网页页面上照片那末多,如何免费下载大家要想的物品呢,假如这个网页页面全是大家要想的照片,难道说大家要1点1点1张1张右键免费下载吗? 自然不太好,这里出示1段Java完成的互联网爬虫抓照片编码,程序流程员朋友有喜爱的记得个人收藏哦。

原材料:务必会java开发设计,用到的关键jar Jsoup自身去在网上免费下载许多。下列是我早已完成的页面化的抓取照片的线上专用工具,有兴趣爱好的盆友能够依照照片详细地址开启看看

下图是抓取实际效果互联网上随意找第1个漂亮美女照片网站

下面是完成编码:

/**

*仿真模拟客户恳求

*/

public final static String UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6821.400

QQBrowser/10.3.3040.400";

/*

*

*抓取所有照片详细地址 备注:zfilepath是zip文档相对路径 url是网页页面详细地址 pp是img的在其中特性1般是src便可

*/

public static boolean getImgSrc(String zfilepath,String url,String pp){

boolean isb =false;

// 运用Jsoup得到联接

Connection connect = Jsoup.connect(url).timeout(5000);

connect.header("Connection", "Keep-Alive");

connect.header("Content-Type", "application/x--form-urlencoded");

connect.header("Aept-Encoding", "gzip, deflate, sdch");

connect.header("Aept", "*/*");

connect.header("User-Agent",Const.UserAgent);

ZipOutputStream out = null;

try {

// 获得Document目标

Document document = connect.ignoreContentType(true).timeout(5000).get();

// 搜索全部img标识

Elements imgs = document.getElementsByTag("img");

File zipfile = new File(zfilepath);

out=new ZipOutputStream(new FileOutputStream(zipfile));

int i=1;

Listlistimg = new ArrayList();

for (Element element : imgs) {

//获得每一个img标识URL "abs:"表明肯定相对路径

String imgSrc = element.attr("abs:"+pp);

listimg.add(imgSrc);

}

listimg = removeCf(listimg);

if(listimg!=null listimg.size() 0){

for(int x=0;x listimg.size();x++){ p=""

long stime = System.currentTimeMillis();

String imgSrc =listimg.get(x);

// 复印URL

System.out.println(imgSrc);

//免费下载照片到当地

boolean is = downImages(imgSrc,out);

long etime = System.currentTimeMillis();

float alltime = (float)(etime - stime)/1000;

Map string,string rest = new HashMap string,string

rest.put("img",imgSrc);

rest.put("time",(alltime)+"");

rest.put("num",i+"");

rest.put("status","true");

if(is){

rest.put("","取得成功");

}else{

rest.put("","不成功");

}

i++;

}

Map string,string rest1 = new HashMap string,string

rest1.put("status","true");

rest1.put("msg","装包进行");

System.out.println("免费下载进行");

isb =true;

}else{

Map string,string rest1 = new HashMap string,string

rest1.put("status","true");

rest1.put("msg","未抓取到数据信息,有将会反爬虫了");

client.sendEvent("chatevent", rest1);

}

} catch (IOException e) {

e.printStackTrace();

Map string,string rest = new HashMap string,string

rest.put("status","false");

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

if(out!=null){

out.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return isb;

}

/**

* 免费下载照片到特定文件目录

*

* @param filePath 文档相对路径

* @param imgUrl 照片URL

*/

public static boolean downImages(/*String filePath,*/ String imgUrl,ZipOutputStream outStream) {

boolean is = false;

// 若特定文档夹沒有,则先建立

/* File dir = new File(filePath);

if (!dir.exists()) {

dir.mkdirs();

}*/

// 截取照片文档名

String fileName = imgUrl.substring(imgUrl.lastIndexOf('/') + 1, imgUrl.length());

try {

// 文档名里边将会有汉语或空格,因此这里要开展解决。但空格又会被URLEncoder转义为加号

String urlTail = URLEncoder.encode(fileName, "UTF⑻");

// 因而要将加号转换为UTF⑻文件格式的%20

imgUrl = imgUrl.substring(0, imgUrl.lastIndexOf('/') + 1) + urlTail.replaceAll("\+", "\%20");

/**

* 认证照片文件格式确保获得动态性照片

*/

fileName = vidImg(fileName);

if(fileName.equals("")){

return is;

}

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

// 写出的相对路径

InputStream in = null;

try {

// 获得照片URL

URL url = new URL(imgUrl);

// 得到联接

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setRequestProperty("User-Agent",Const.UserAgent);

// 设定10秒的相应時间

connection.setConnectTimeout(10 * 1000);

// 得到键入流

in = connection.getInputStream();

byte[] data=readInputStream(in);

outStream.putNextEntry(new ZipEntry(fileName));

outStream.write(data);

is = true;

return is;

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

outStream.closeEntry();

in.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return is;

}

/**

* 除去反复的照片

* @param list

* @return

*/

public static ListremoveCf(Listlist){

ListlistTemp = new ArrayList();

for(int i=0;i list.size();i++){ p=""

if(!listTemp.contains(list.get(i))){

listTemp.add(list.get(i));

}

}

return listTemp;

}

喜爱的记得个人收藏哦

这个专用工具我早已公布了,详细地址便是:

相关阅读