`
rain_2372
  • 浏览: 682968 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java抓取网络图片放到本地

    博客分类:
  • java
阅读更多
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GetContentPicture {
// 得到了图片地址并下载图片
public void getHtmlPicture(String httpUrl) {
URL url;
BufferedInputStream in;
FileOutputStream file;
int count; // 图片文件名序号
FileNumber num = new FileNumber();// 图片文件名序号类,num为对象
count = num.NumberReadFromFile();// 获取图片文件序号
try {
System.out.println("获取网络图片");
String fileName = (String.valueOf(count)).concat(httpUrl
.substring(httpUrl.lastIndexOf(".")));// 图片文件序号加上图片的后缀名,后缀名用了String内的一个方法来获得
// httpUrl.substring(httpUrl.lastIndexOf("/"));//这样获得的文件名即是图片链接里图片的名字
String filePath = "d:/photos/cc/";// 图片存储的位置
url = new URL(httpUrl);

in = new BufferedInputStream(url.openStream());

file = new FileOutputStream(new File(filePath + fileName));
int t;
while ((t = in.read()) != -1) {
file.write(t);
}
file.close();
in.close();
System.out.println("图片获取成功");
count = count + 1;// 图片文件序号加1
num.NumberWriteToFile(count);// 将图片名序号保存
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

// 获取网页的代码保存在String格式的Content中
public String getHtmlCode(String httpUrl) throws IOException {
String content = "";
URL uu = new URL(httpUrl); // 创建URL类对象
BufferedReader ii = new BufferedReader(new InputStreamReader(uu
.openStream())); // //使用openStream得到一输入流并由此构造一个BufferedReader对象
String input;
while ((input = ii.readLine()) != null) { // 建立读取循环,并判断是否有读取值
content += input;
}
ii.close();
return content;
}

// 分析网页代码,找到匹配的网页图片地址
public void get(String url) throws IOException {

String searchImgReg = "(?x)(src|SRC|background|BACKGROUND)=('|\")/?(([\\w-]+/)*([\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))('|\")";// 用于在网页代码Content中查找匹配的图片链接。
String searchImgReg2 = "(?x)(src|SRC|background|BACKGROUND)=('|\")(http://([\\w-]+\\.)+[\\w-]+(:[0-9]+)*(/[\\w-]+)*(/[\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))('|\")";

String content = this.getHtmlCode(url);// this指对象gcp,在此地调用获取网页代码,getHtmlCode方法
// System.out.println(content); //输出的content将是一个连续的字符串。

Pattern pattern = Pattern.compile(searchImgReg);// java.util.regex.Pattern
Matcher matcher = pattern.matcher(content); // java.util.regex.Matcher
while (matcher.find()) {
System.out.println(matcher.group(3));// 输出图片链接地址到屏幕
// System.out.println(url);
this.getHtmlPicture(matcher.group(3));// 对象调用getHtmlPicture从网上下载并输出图片文件到指定目录
}

pattern = Pattern.compile(searchImgReg2);
matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println(matcher.group(3));
this.getHtmlPicture(matcher.group(3));
}
// searchImgReg =
// "(?x)(src|SRC|background|BACKGROUND)=('|\")/?(([\\w-]+/)*([\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))('|\")";
}

// 主函数url网页的地址
public static void main(String[] args) throws IOException {
String url = "http://www.baidu.com";
GetContentPicture gcp = new GetContentPicture();
gcp.get(url);

}
}

import java.io.*;

//图片文件名,需要在文件名序号TXT文件保存地址建立一个number.txt并写入1保存;

public class FileNumber {
// 文件写
public void NumberWriteToFile(int x) {
int c = 0;
c = x;
File filePath = new File("d:/photos/cc");
File f1 = new File(filePath, "number.txt");
try {
FileOutputStream fout = new FileOutputStream(f1);
DataOutputStream out = new DataOutputStream(fout);
out.writeInt(c);

} catch (FileNotFoundException e) {
System.err.println(e);
} catch (IOException e) {
System.err.println(e);
}

}

// 文件读
public int NumberReadFromFile() {
int c1 = 0;
File filePath = new File("d:/photos/cc");
File f1 = new File(filePath, "number.txt");
try {
FileInputStream fin = new FileInputStream(f1);
DataInputStream in = new DataInputStream(fin);
c1 = in.readInt();
System.out.println(c1);// 输出文件内容至屏幕
} catch (FileNotFoundException e) {
System.err.println(e);
} catch (IOException e) {
System.err.println(e);
}
return c1;
}

public static void main(String args[]) {

}
}
分享到:
评论

相关推荐

    java下载网络图片到本地保存

    在Java编程中,下载网络图片并将其保存到本地是一个常见的任务,特别是在开发涉及网页抓取、数据备份或者网络资源管理的项目中。这个过程通常包括以下几个步骤:建立网络连接、发送请求、接收响应数据以及将数据保存...

    使用SDK抓取海康威视录像机图片及视频流实时显示

    在本文中,我们将深入探讨如何使用Java语言配合海康威视的SDK来抓取NVR(网络视频录像机)的图片和视频流,并实现实时显示。海康威视是全球知名的安防监控设备制造商,其提供的SDK允许开发者进行深度集成和定制化...

    java 新浪网易搜狐新闻抓取源码

    抓取到的新闻数据通常会存储在本地文件、数据库或云存储中,便于后续分析和使用。在这个项目中,可能会使用如CSV文件或SQLite数据库来存储新闻条目,包括标题、来源、链接、发布日期等字段。 五、异常处理与反爬...

    Java网络爬虫代码

    是用纯Java开发的,用来进行网站镜像抓取的工具,可以使用配制文件中提供的URL入口,把这个网站所有的能用浏览器通过GET的方式获取到的资源全部抓取到本地,包括网页和各种类型的文件,如:图片、flash、mp3、zip、...

    基于Java实现的本地网卡信息抓取工具,并对TCP信息进行解析

    介绍 使用JPcap抓取本地网卡信息,并对...将jpcap.dll放到jdk或者jre的bin下,jpcap.dll也在lib下,这个是64位的 将jpcap.jar加入项目依赖 直接run HttpMain即可,在控制台数据使用的网卡序号,就可以看到抓取内容了。

    java后端调用大华视频的demo

    综上所述,"java后端调用大华视频的demo"涵盖了Java与本地库的交互、视频处理、设备控制等多个技术领域,是Java后端开发者学习硬件集成和物联网应用的一个实践案例。通过深入研究DEMO和SDK文档,开发者可以掌握这一...

    java操作IE代理

    在Java编程中,有时我们需要模拟用户的网络环境,例如设置IE(Internet Explorer)浏览器的代理以进行自动化测试或者数据抓取。这个"java操作IE代理"的主题涉及到如何在Java程序中控制IE的网络代理设置,这通常需要...

    Android 数据抓取实现歌曲在线搜索

    对于歌词部分,抓取到歌词文本后,可以将其存储在本地或者使用在线服务。Android应用通常会有一个单独的视图来显示滚动的歌词,与当前播放的歌曲同步。这需要计算歌词的时间戳,并根据播放进度更新显示。 此外,...

    android studio javacv 播放rstp流、抓图、录制视频功能

    至于“录制视频”,JavaCV提供了FFmpegFrameRecorder类,它可以将视频帧和音频样本记录到本地文件。开发者需要创建一个FFmpegFrameRecorder实例,设置输出文件路径、视频编码、帧率等参数,然后在每帧处理完毕后调用...

    java闹钟开发项目

    根据提供的文件信息,我们可以分析出该Java项目与闹钟功能并无直接关联,而是涉及网络爬虫技术,用于抓取特定网站(例如新浪天气新闻页面)的信息,并处理其中的文字与图片内容。下面将从几个方面来解析这个项目所...

    Java网络爬虫的实现

    Java网络爬虫的实现涉及多个关键步骤,首先是从网页中提取链接,然后将这些链接加入到待爬取队列中,接着抓取这些链接指向的网页内容,并将这些内容保存。实现这一过程的程序需要具备几个核心方法:获取待爬取队列中...

    网络蜘蛛(Java源码)

    4. **存储数据**:将解析出的有用信息(如文本、图片等)存储到本地或数据库中。 5. **重复步骤2-4**:将新发现的URL加入队列,重复抓取过程,直到达到预设的条件(如抓取深度、URL数量等)。 在Java中实现这个过程...

    Java开发 中控考勤机 连接所需dll和jar包

    这需要利用Java的本地接口(JNI)或者第三方库来实现。本话题的重点是"Java开发 中控考勤机 连接所需dll和jar包",其中提到的"jacob-1.19"和"dll文件"是关键组件。 首先,让我们了解一下`jacob-1.19`。Jacob(Java ...

    Java网络爬虫(蜘蛛)源码.zip

    Java网络爬虫,也被称为Java网络蜘蛛,是用于自动抓取互联网信息的一种程序。它能够按照一定的规则在网页之间跳转,搜集并处理所需的数据,是数据挖掘和数据分析的重要工具。下面将详细介绍Java网络爬虫的基本概念、...

    网络图片下载源码

    在IT行业中,网络图片下载是常见的需求,尤其在开发网页抓取、数据分析或者社交媒体应用时。这个"网络图片下载源码"项目显然提供了一个实现这一功能的示例,利用了消息队列和子线程管理机制来优化性能和提高效率。...

    java实现视频的录制和拍照功能Demo

    `javax.media.control.FrameGrabbingControl`接口提供了抓取当前帧的能力,结合`javax.imageio.ImageIO`类可以将抓取的图像数据写入到JPEG或PNG等常见图片格式的文件中。 5. **事件监听与用户交互**: 在实际应用中...

    基于http的Java爬虫爬取百度新闻

    在IT行业中,网络爬虫是一种常见的技术,用于自动地遍历和抓取互联网上的信息。在本项目中,“基于http的Java爬虫爬取百度新闻”是一个实例,它利用Java编程语言,通过HTTP协议来抓取百度新闻网站上的数据。这个项目...

    java nutbug

    nutbug是用纯Java开发的,用来进行网站镜像抓取的工具,可以使用配制文件中提供的URL入口, 把这个网站所有的能用浏览器通过GET...只需要把抓取下来的网站放到web服务器 (如:Apache)中,就可以实现完整的网站镜像。

    摄像头拍照程序java

    5. **保存图片**:将获取的图像数据转换为常见的图片格式(如JPEG或PNG)并保存到本地文件系统,是摄像头拍照程序的重要组成部分。这通常需要使用`javax.imageio.ImageIO`类,它可以将`BufferedImage`对象写入磁盘。...

    andorid 抓取系统所有apk的错误log

    - 为了不影响用户体验,避免长时间阻塞主线程,日志抓取和发送操作应放在后台线程执行。 - 对于大量日志,可以考虑分批发送,或者先存储在本地,待网络稳定时再统一发送。 通过以上步骤,我们可以构建一个系统级...

Global site tag (gtag.js) - Google Analytics