使用JAVA爬取网页图片

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

}

效果图:

时间: 2024-07-30 15:35:37

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

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

学完Requests库与Beautifulsoup库我们今天来实战一波,爬取网页图片.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图.所以我找了这个网站http://www.ivsky.com 网站里面有很多的图集,我们就找你的名字这个图集来爬取 http://www.ivsky.com/bizhi/yourname_v39947/ 来看看这个页面的源代码: 可以看到我们想抓取的图片信息在<li> 里面然后图片地址在img里面那么我们这里可以用Beautifu

java 抓取网页图片

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

Python3批量爬取网页图片

所谓爬取其实就是获取链接的内容保存到本地.所以爬之前需要先知道要爬的链接是什么. 要爬取的页面是这个:http://findicons.com/pack/2787/beautiful_flat_icons 里面有很多不错的图标,目标就是把这些文件图片爬下来,保存成本地图片. 用python3怎么做呢? 第一步:获取要爬取的母网页的内容 import urllib.request import re url = "http://findicons.com/pack/2787/beautiful_f

python爬取网页图片

在Python中使用正则表达式,一个小小的爬虫,抓取百科词条网页的jpg图片.下面就是我的代码,作为参考: #coding=utf-8 # __author__ = 'Hinfa' import re import os from urllib import request as req url='https://baike.baidu.com/item/%E5%B9%BF%E5%B7%9E/72101?fr=aladdin' path='Test//百科广州图片2' os.mkdir(path

java爬取网页上qq号,邮箱号等

import java.io.BufferedReader;import java.io.FileReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.regex.Matcher;import java.util.regex.Pattern; public class GetMail { public static void main(S

Node实战-----爬取网页图片

在本篇博文中我将实现一个完整的实例:主要使用Node.js爬取一个网页,需要通过第三方模块cheerio.js分析这个网页的内容,最后将这个网页的图片保存个在本地. 一.项目目录与思路 新建一个项目名为:project_01,输入命令在控制台,使其生成package.json文件: 命令: npm init 在控制台输入npm install命令下载需要的模块,在本项目中需要的request和cheerio模块,将使用命令进行下载到本地: 命令: npm install request chee

python爬虫初学之:爬取网页图片

#!/usr/bin/env python3.5 # -*-coding:utf-8 -*- """ 作者:MR RaoJL 日期:'Sun Dec 25 12:28:08 2016' 用途:爬 www.aitaotu.com/guonei 网站的图片地址 运行环境:Python3.5(widows或linux都可以)主要在linux下测试的 现有的问题:爬取速度太慢 初学者,问题估计太多 """ from itertools import ch

简单的爬取网页图片

import reimport urllib.request # ------ 获取网页源代码的方法 ---def getHtml(url): page = urllib.request.urlopen(url) html = page.read() return html # ------ getHtml()内输入任意帖子的URL ------html = getHtml("http://tieba.baidu.com/p/3205263090")# ------ 修改html对象内

Python爬虫爬取网页图片

没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将一张张图片,保存下来. 今天逛贴吧看见好多美图,可是图片有点多,不想一张一张地复制粘贴,怎么办呢?办法总是有的,即便没有我们也可以创造一个办法. 下面就看看我今天写的程序: #coding=utf-8 #urllib模块提供了读取Web页面数据的接口 import urllib #re模块主要包含了正则表达式 import re #定义一个getHtml()函数 def getHtm