经过之前的HttpURLConnection还有各种流的结束,已经可以开始理解怎么下载网页上的一张图片了。

对各种流不理解的话,可以翻翻前面的随笔,讲得都比较详细。在此就不细讲了。

主要流程:

1、HttpURLConnection连接上图片的网址,打开一个InputStream。

2、把InputStream的内容读取到ByteArrayOutputStream中,此时ByteArrayOutputStream存储了图片数据的byte数组。

3、通过文件流,把byte数据填充到一个jpg文件中。

代码非常简单:

String strUrl = "http://ww4.sinaimg.cn/mw1024/005vbOHfgw1eylg2gnnrlj30ia0s87ac.jpg";

//构造URL
URL url = new URL(strUrl);

//构造连接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();

//这个网站要模拟浏览器才行
conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko");

//打开连接
conn.connect();

//打开这个网站的输入流
InputStream inStream = conn.getInputStream();

//用这个做中转站 ,把图片数据都放在了这里,再调用toByteArray()即可获得数据的byte数组
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
//用这个是很好的,不用一次就把图片读到了文件中
//要是需要把图片用作其他用途呢?所以直接把图片的数据弄成一个变量,十分有用
//相当于操作这个变量就能操作图片了

byte [] buf = new byte[1024];
//为什么是1024?
//1024Byte=1KB,分配1KB的缓存
//这个就是循环读取,是一个临时空间,多大都没关系
//这没有什么大的关系,你就是用999这样的数字也没有问题,就是每次读取的最大字节数。
//byte[]的大小,说明你一次操作最大字节是多少
//虽然读的是9M的文件,其实你的内存只用1M来处理,节省了很多空间.
//当然,设得小,说明I/O操作会比较频繁,I/O操作耗时比较长,
//这多少会有点性能上的影响.这看你是想用空间换时间,还是想用时间换空间了.
//时间慢总比内存溢出程序崩溃强.如果内存足够的话,我会考虑设大点.
int len = 0;

//读取图片数据
while((len=inStream.read(buf))!=-1){
System.out.println(len);
outStream.write(buf,0,len);
}
inStream.close();
outStream.close();

//把图片数据填入文件中
File file = new File("t.jpg");

FileOutputStream op = new FileOutputStream(file);

op.write(outStream.toByteArray());

op.close();

}

效果图:

转载于:https://www.cnblogs.com/wzben/p/5025833.html

使用JAVA爬取网页图片相关推荐

  1. 【用Java爬取网页图片——爬虫爬取数据】

    用Java爬取网页图片--爬虫爬取数据 1.在创建项目中导入jsoup 2.创建一个保存下载图片的路径 3.使用URL读取网页路径,jsoup读取网页内容 4.利用属性标签获取图片连接块 5.因为该路 ...

  2. Java 爬取网页图片并下载

    Java 爬取网页图片并下载 源码; package a; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup. ...

  3. java爬虫-简单爬取网页图片

    刚刚接触到"爬虫"这个词的时候是在大一,那时候什么都不明白,但知道了百度.谷歌他们的搜索引擎就是个爬虫. 现在大二.再次燃起对爬虫的热爱,查阅资料,知道常用java.python语 ...

  4. java实现专门爬取网页图片的软件

    发现我的不足: 1.对awt和swing的使用十分的差劲,时不时就要查一下博客... 可以做一个专门爬取网页图片的软件,功能已经实现了,就UI对应的设计一下就好了. 做完了..虽然有很大的局限,但是功 ...

  5. Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索

    Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索 一.资源 为什么接下来的代码中要使用el.getElementsByTa ...

  6. Python学习笔记:爬取网页图片

    Python学习笔记:爬取网页图片 上次我们利用requests与BeautifulSoup爬取了豆瓣<下町火箭>短评,这次我们来学习爬取网页图片. 比如想爬取下面这张网页的所有图片.网址 ...

  7. node:爬虫爬取网页图片 1

    代码地址如下: http://www.demodashi.com/demo/13845.html 前言 周末自己在家闲着没事,刷着微信,玩着手机,发现自己的微信头像该换了,就去网上找了一下头像,看着图 ...

  8. 一个咸鱼的python_一个咸鱼的Python爬虫之路(三):爬取网页图片

    学完Requests库与Beautifulsoup库我们今天来实战一波,爬取网页图片.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图. 所以我找了这个网站 http: ...

  9. 使用Python爬取网页图片

    使用Python爬取网页图片 李晓文 21 天前 近一段时间在学习如何使用Python进行网络爬虫,越来越觉得Python在处理爬虫问题是非常便捷的,那么接下来我就陆陆续续的将自己学习的爬虫知识分享给 ...

最新文章

  1. 未来黑客入侵的不仅有电脑,还有人脑?
  2. 在MFC中使用AFXBEGINTHREAD的方法
  3. Maven知识点简要
  4. php拖拽原理,JS拖拽效果及原理解析
  5. 接口的mime类型ajax,Ajax的原生实现关于MIME类型的使用方法
  6. C/C++[codeup 1926]EXCEL排序
  7. MAC安装Mysql超详细完整教程
  8. linux 挂载镜像文件命令,Linux mount命令系统挂载与镜像处理
  9. leetcode 718 最长公共子串
  10. 自己开店用什么收银系统好-纳客收银系统
  11. 《微积分:一元函数微分学》——导数公式
  12. 谷歌浏览器应用翻译插件,
  13. 软件项目估算永远不准怎么办?钱少时间紧未必是坏事
  14. 资深ios开发工程师收藏的iOS干货文章、大神的blog博客
  15. Android 通知栏图标
  16. 《使用Python进行自然语言处理》学习笔记六
  17. 在股东协议中,如何设定关于股权转让的相关规定,如股东优先购买权、股权出售限制、股权转让审批流程等?
  18. vue+elementUi在点js.js文件中使用Message消息提示、Notification、MessageBox、succes、import、from
  19. IE 下JS上传文件时出现“拒绝访问”的解决方案
  20. 选择java还是python-选Python还是Java ?

热门文章

  1. 字符串替换(C++)
  2. 吐血解决python中文写入文件问题
  3. 实验三 编程、编译、连接、跟踪
  4. C++函数指针和类成员函数指针
  5. Windows中木马之后桌面被篡改的恢复方法
  6. MOSS字段编辑权限控制方案(2)-添加管理链接
  7. 在Global中Application_Error事件处理错误信息
  8. jQuery实现 div里面的文字如何自动缩小,避免文字溢出
  9. vue3.x 自定义事件 emits
  10. OpenCV3学习(7.2)——图像分割之二(分水岭算法watershed)