我们经常需要用到互联网上的一些共享资源,图片就是资源的一种,怎么把网页上的图片批量下载下来?有时候我们需要把网页上的图片下载下来,但网页上图片那么多,怎么下载我们想要的东西呢,如果这个网页都是我们想要的图片,难道我们要一点一点一张一张右键下载吗? 当然不好,这里提供一段Java实现的网络爬虫抓图片代码,程序员同志有喜欢的记得收藏哦。
材料:必须会java开发,用到的核心jar Jsoup自己去网上下载很多。
以下是我已经实现的界面化的抓取图片的在线工具,有兴趣的朋友可以按照图片地址打开看看
下图是抓取效果网络上随便找第一个美女图片网站
这个是要抓取的网站的主界面:
这里是抓取的结果已经到我本地电脑了
下面是实现代码:
/**
*模拟用户请求
*
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的其中属性一般是src即可
*
public static boolean getImgSrc(String zfilepath,String url,文件和照片怎么一起打包,String pp){,
public static boolean getImgSrc(String zfilepath,String url,String pp){
手机照片打包可以在手机里面压缩打包再通过微信QQ分享给好友。以华为手机操作为例:1、首先,打开手机,找到手机上面的实用工具进入。2、在进入到实用工具里面,选择文件管理进入。3、然后选择图片,选择要发送的图片全选,再选择。
boolean isb =false;
// 利用Jsoup获得连接
Connection connect = Jsoup.connect(url).timeout(5000);
connect.header("Connection","Keep-Alive");
connect.header("Content-Type","application/x-www-form-urlencoded");
connect.header("Accept-Encoding","gzip,deflate,sdch");
connect.header("Accept","*/*");
connect.header("User-Agent",Const.UserAgent);
ZipOutputStream out = null;
try {
// 得到Document对象
// 查找所有img标签
Elements imgs = document.getElementsByTag("img");
File zipfile = new File(zfilepath);
out=new ZipOutputStream(new FileOutputStream(zipfile));
int i=1;
List<String> listimg = new ArrayList<String>();
for (Element element : imgs) {
//获取每个img标签URL "abs:"表示绝对路径
用微信打包发照片发送,首先来到微信主页搜索文件传输助手,然后把图片放在助手,接着全选发送的图片,点击合并转发就相当于打包发照片了。或者你也可以采取以下操作,如先创建一个文件夹,然后将需要打包的图片放到文件夹里面;。
String imgSrc = element.attr("abs:"+pp);
listimg.add(imgSrc);
}
listimg = removeCf(listimg);
1、首先打开相册手机应用软件。2、进入相册后点击右下角的“新建文件夹”。3、然后在打开的窗口中,输入文件夹名称点击“确认”。4、接着点击右上角的“+”按钮为文件夹添加照片。5、然后在打开的页面中,选择要添加的。
if(listimg!=null && listimg.size()>0){
for(int x=0;x<listimg.size();x++){
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("http","成功");
}else{
rest.put("http","失败");
}
i++;
}
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 {
照片打包方法如下:你如果想要把照片打包的话,要准备一台电脑。1、首先打开电脑,在电脑桌面点击鼠标右键,就可以看到右键菜单里面有个新建选项,点击新建选项,如下图:2、点击新建选项后,就可以看到右边会再次跳出一个菜单。
// 文件名里面可能有中文或者空格,所以这里要进行处理。但空格又会被URLEncoder转义为加号
String urlTail = URLEncoder.encode(fileName,"UTF-8");
// 因此要将加号转化为UTF-8格式的%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);
1、打开手机软件下载商城,搜索并下载“解压专家”app。2、下载完成之后,在手机桌面上找到并进入“解压专家”app界面。点击软件界面最下方的黄色“+”号。3、跳出选择框,选择“导入相册”。4、进入手机相册界面,将需要打包。
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 List<String> removeCf(List<String> list){
List<String> listTemp = new ArrayList<String> ();
for(int i=0;i<list.size();i++){
if(!listTemp.contains(list.get(i))){
listTemp.add(list.get(i));
}
}
return listTemp;
}
1、首先,打开手机,点击手机里面的实用工具里面的文件管理。2、进入到文件管理里面,选择图片选项。3、选择要压缩打包的图片添加,再点击下方的三个小点,在弹出来的选项中选择压缩。4、这样就打包压缩好了,可以选择查看。5。
喜欢的记得收藏哦
这个工具我已经发布了,地址就是: