经过之前的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();

}

效果图:

使用JAVA爬取网页图片的更多相关文章

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

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

  2. python requests库爬取网页小实例:爬取网页图片

    爬取网页图片: #网络图片爬取 import requests import os root="C://Users//Lenovo//Desktop//" #以原文件名作为保存的文 ...

  3. node:爬虫爬取网页图片

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

  4. erlang 爬虫——爬取网页图片

    说起爬虫,大家第一印象就是想到了python来做爬虫.其实,服务端语言好些都可以来实现这个东东. 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌 ...

  5. Python3批量爬取网页图片

    所谓爬取其实就是获取链接的内容保存到本地.所以爬之前需要先知道要爬的链接是什么. 要爬取的页面是这个:http://findicons.com/pack/2787/beautiful_flat_ico ...

  6. Java爬取 百度图片Google图片Bing图片

    先看看抓取的结果. 8个Java类: Startup.java - main函数 ImageCrawler.java - Crawler基类 BaiduImageCrawler.java - 百度图片 ...

  7. 利用Python爬取网页图片

    最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 我们这里以sogou作为爬取的对象. 首先我们进入搜狗图片 ...

  8. python爬取网页图片(二)

    从一个网页爬取图片已经解决,现在想要把这个用户发的图片全部爬取. 首先:先找到这个用户的发帖页面: http://www.acfun.cn/u/1094623.aspx#page=1 然后从这个页面中 ...

  9. java 抓取网页图片

    import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.Out ...

随机推荐

  1. mysql-debug: Thread stack overrun

    bug info 报错信息: java.sql.SQLException: Thread stack overrun: 5456 bytes used of a 131072 byte stack, ...

  2. docker 国内加速器配置

    配置镜像加速器 阿里云 登录到 阿里云获取到专属加速地址bqr1dr1n.mirror.aliyuncs.com 找到服务 deamon.js 所在目录C:\ProgramData\docker\co ...

  3. 初识Linux(三)--文件系统基本结构

    Linux文件系统是一个倒立的单根树状结构,文件名称严格区分大小写(windows系统则是对大小写不明感的).路径用“/”分隔,跟windows的“\”不同. 这里我画了一张一般Linux系统的正常目 ...

  4. MySqlDBHelper数据库连接

    这里是本人在工作中用到,希望给大家帮助 public class MySqlDBHelper { //获取一个记录器 private static readonly log4net.ILog log ...

  5. javascript Math.pow 函数 详解 【附】年均增长率计算

    语法 Math.pow(x,y) 定义和用法 pow() 方法可返回 x 的 y 次幂的值. 处理简单数学问题 6的4次方等于1296,记作:64=1296; 求值: Math.pow(6,4)=12 ...

  6. Android WebView remote debugging

    /***************************************************************************** * Android WebView rem ...

  7. 【MFC】MoveWindow();函数使用详解

    摘自:http://blog.csdn.net/yjkwf/article/details/5281207 CWnd::MoveWindow 详解 2010-02-02 16:08 3432人阅读 评 ...

  8. PHPCMS V9调用父栏目 顶级父栏目的代码

    一.调用父栏目 首先是列表页和二级栏目页list.html {$CATEGORYS[$top_parentid][catname]} //顶级父栏目名称 {$CATEGORYS[$CAT[parent ...

  9. block的基本使用

    block用来保存一段代码 block的标志:^ block跟函数很像: 1. 可以保存代码 2. 有返回值 3. 有形参 4. 调用方式一样 定义bolock变量 例1: void (^myBloc ...

  10. Vue.js devtool插件下载安装及后续问题解决

    在中国,你是无法使用谷歌应用商店,所以你下载插件,要使用一些别的手段,一种是下载源码编译,另一种是通过第三方网站.第一种不适合小白,所以现在介绍第二组. 下载插件网站 国外网站:https://www ...