java抓取并保存图片_利用JAVA抓取网站的所有图片并保存于本地

news/2024/5/18 15:04:54/文章来源:https://blog.csdn.net/weixin_35968185/article/details/114710161

由于今天我要保存一个网页上的所有图片并做一个ppt,但是这个网页比较蛋疼,是微信上的一个类似于动画的东西,所以没法保存整个网页然后直接取照片,

所以我采用java写了一个程序,采用类似于网络爬虫的思路把照片的抓下来。

网页链接如下

http://irm.infzm.com/topic/liushouh5/?from=timeline&isappinstalled=0

截图如下是一个可以左右翻页的网页

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

然后抓取图片的关键代码为

public static String getURLContent(String urlStr) {

/** 网络的url地址 */

URL url = null;

/** http连接 */

HttpURLConnection httpConn = null;

/**//** 输入流 */

BufferedReader in = null;

StringBuffer sb = new StringBuffer();

try{

url = new URL(urlStr);

in = new BufferedReader( new InputStreamReader(url.openStream(),"UTF-8") );

String str = null;

while((str = in.readLine()) != null) {

sb.append( str + "\n" );

}

} catch (Exception ex) {

} finally{

try{

if(in!=null) {

in.close();

}

}catch(IOException ex) {

}

}

String result =sb.toString();

// System.out.println(result);

return result;

}以上是获取网页源代码然后可以加以获取图片的链接

public void writeImageFile(BufferedImage bi,String name,String format) throws IOException{

File outputfile = new File(name+format);

ImageIO.write(bi, format, outputfile);

System.out.println("caught");

}

以上是把图片缓存写入磁盘上

public void readNetImage(String netPicture){

try {

URL url = new URL(netPicture);

//打开链接

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

//设置请求方式为"GET"

conn.setRequestMethod("GET");

//超时响应时间为5秒

conn.setConnectTimeout(5 * 1000);

//通过输入流获取图片数据

InputStream inStream = conn.getInputStream();

image = ImageIO.read(inStream);

System.out.println("read");

} catch (IOException e) {

System.err.println("An error occured when loading the image icon...");

}

}

以上是读取网页上的图片

这个java文件:

package spring2;

import java.awt.image.BufferedImage;

import java.io.*;

import java.net.*;

import javax.imageio.ImageIO;

import javax.imageio.stream.ImageInputStream;

public class CatchPic {

BufferedImage image = null;

String picUrl = "http://cnpc.infzm.com/mostnorth/src/static/image/";

/**

* 程序中访问http数据接口

*/

public static String getURLContent(String urlStr) {

/** 网络的url地址 */

URL url = null;

/** http连接 */

HttpURLConnection httpConn = null;

/**//** 输入流 */

BufferedReader in = null;

StringBuffer sb = new StringBuffer();

try{

url = new URL(urlStr);

in = new BufferedReader( new InputStreamReader(url.openStream(),"UTF-8") );

String str = null;

while((str = in.readLine()) != null) {

sb.append( str + "\n" );

}

} catch (Exception ex) {

} finally{

try{

if(in!=null) {

in.close();

}

}catch(IOException ex) {

}

}

String result =sb.toString();

// System.out.println(result);

return result;

}

public static void main(String[] args){

// String temp = getURLContent("http://www.weather.com.cn/weather/101120101.shtml"); //jinan

// String temp = getURLContent("http://www.weather.com.cn/weather1d/101210101.shtml"); //hangzhou

String url = "http://irm.infzm.com/topic/liushouh5/?from=timeline&isappinstalled=0";

String temp = getURLContent(url);

new CatchPic().findAllPic("jpg");

}

public void findAllPic(String format){

String url = "http://irm.infzm.com/topic/liushouh5/?from=timeline&isappinstalled=0";

String temp = getURLContent(url);

int max = temp.lastIndexOf(format);

int index=0;

while(index

{

int one = temp.indexOf(format, index+1);

index = one;

while(temp.charAt(one--)!='/');

String test = temp.substring(one+2, index);

readNetImage(picUrl+test+format);

System.out.println(test+"\t"+picUrl+test+format);

try {

writeImageFile(image,test,format);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public void writeImageFile(BufferedImage bi,String name,String format) throws IOException{

File outputfile = new File(name+format);

ImageIO.write(bi, format, outputfile);

System.out.println("caught");

}

public void readNetImage(String netPicture){

try {

URL url = new URL(netPicture);

//打开链接

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

//设置请求方式为"GET"

conn.setRequestMethod("GET");

//超时响应时间为5秒

conn.setConnectTimeout(5 * 1000);

//通过输入流获取图片数据

InputStream inStream = conn.getInputStream();

image = ImageIO.read(inStream);

System.out.println("read");

} catch (IOException e) {

System.err.println("An error occured when loading the image icon...");

}

}

void special(String format){

String url = "http://irm.infzm.com/topic/liushouh5/?from=timeline&isappinstalled=0";

String temp = getURLContent(url);

int max = temp.lastIndexOf(format);

int index = max;

while(temp.charAt(max--)!='/');

String test = temp.substring(max+2, index);

readNetImage(picUrl+test+format);

System.out.println(test+"\t"+picUrl+test+format);

try {

writeImageFile(image,test,format);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

运行后保存的图片:

0818b9ca8b590ca3270a3433284dd417.png

ps如果要应用到其他网页需要改动一些东西,这个程序针对这个网页http://irm.infzm.com/topic/liushouh5/?from=timeline&isappinstalled=0做了一些优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_763504.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站黑色字体php,字体颜色怎么变成黑色

字体颜色变成黑色的方法:首先打开Word文档窗口,选中需要改变字体颜色的文本块;然后在“开始”功能区的“字体”分组中,单击“字体颜色”下拉三角按钮;接着打开字体颜色面板;最后在“主题颜色”中选择“黑色…

移动网站设计与开发的碎碎念

2019独角兽企业重金招聘Python工程师标准>>> 移动开发的快速发展让移动用户使用移动设备变得更容易。人们通过使用移动设备可以很容易地访问移动网页。根据最近的一项研究,超过6300万的美国人通过移动设备访问不同的移动网站,其数量预计到201…

asp抓取网页某个标签内的_必须要了解SEO常用标签,你都知道几个?

很多人将SEO看作一份非常简单的工作,认为只需要更新一下网站内容,发发外链就可以了。殊不知,你之所以做不好这份工作,就是因为如此。SEO其实是一个比较复杂且长期的过程,涉及的方面很多,需要掌握的知识也不…

Project Server 2013新手入门 (一)为PWA添加用户并分享网站

之前做过Project server 2013的很多测试,一直没发上来。现在终于想着能写点自己会的东西,都比较简单,我也是新手。之前测试的文档我会陆续的发上来,供新人参考,有不懂的,大家也可一起讨论。我这里就不先写什…

一键部署网站php源码,如何轻松建站?站点一键部署搭建(详细教程)

来越多的人选择个人建站,个人站长虽然门槛很低,但是有些朋友觉得Linux服务器各种复杂的命令脚本让自己没法搭建环境。今天就给大家推荐一款使用方便、功能强大的快速建站工具——云帮手,支持 Linux 与 Windows 系统,可一键配置搭建…

多媒体开发之---一个破解版的迅雷云点播网站

国庆放假后,周六加一天班 ,周日本来是搞学习的,后面看到,最近比较火的,我有比较喜欢的喜剧 导演宁浩 ,就骨粉搜搜,居然搜到了资源,没得,资源是比较多,有什么吉…

网站开发笔记【四】css hack技术

1.如何让文字居中显示 类型 单行文字单行文字可以设置line-height和height一样。 多行文字(高度不固定) 可以设置padding在外层的包容容器中。 如:设置padding:25px;这样高度就会显示在居中。 多行文字&#xff08…

java服务端性能优化_[读书笔记] 大型网站性能优化实战-服务端性能优化

1 QPS (吞吐量)1.1 RT(ResponseTime,响应时间)服务器端 RT网络开销 ≈ 客户端 RT。对于网络来讲,常见的优化方式有 CDN、 AND和专线, 分别适用于不同的场景。服务器端 RT Thread CPU Time Thread Wait Time。单线程 QPS 1000ms / RT。多线…

java开源 mooc,GitHub - bo5509/TinyMooc: 轻量级Java平台在线幕课学习网站

萌课(tinymooc)是什么?tinymooc 中文名萌课,是一个轻量级Web网站。它拥有简洁的代码,优雅的设计。萌课网目前打算实现微课程的点播和直播服务,依托于腾讯云强大的云计算服务给用户带去更好的微课学习体验。如果你喜欢,欢迎 Star and Fork, 谢谢!特性轻量级。代码简…

PHP-购物网站开发设计(一)

2015-07-6 开始使用PHP完成简单购物网站的设计,首先要选择合适的软件平台,所以今天先记录平台的选择与搭建: 我选择使用Apache24 PHP 5.6 MySQL 开发环境完成PHP网站开发,软件开发IDE使用PhpStorm8.0.3。 平台搭建过程如下&…

简单网站新闻发布系统

写这篇文章的时候首先要向bben_h 和jdxx表示感谢,是bben_h提出了C#中字符替换这个问题,jdxx很好的解决了这个问题,同时也使我想起以前做的一些程序(简单网站新闻发布系统),现在就把它奉献给大家&#xff0c…

VS2005在开发网站时的一个编译BUG

这两天我在用C#做一个WEB网站,用的是VS2005,碰到一个编译问题,害我查了很长时间,终于找到原因了-_- 放上来,如果有碰到相同问题的兄弟正好看看。现象:编译时,当页面对应的cs文件有错误时&#…

中小型企业网络规划设计方案_中小型企业做品牌网络营销推广时要注意什么问题?【seo专吧】...

许多中小型企业想要网络营销,但是想开展起来就总有困难:不知道怎么宣传、不知道宣传什么、不知道用什么渠道宣传,今天,全网天下的徐国祥就跟大家讲讲。1、前期准备工作要充足万事开头难,所以事前要先分析考虑企业的自我…

环球企业家《信息网站的未来》

环球企业家原文标题:我知道明年夏天你做了什么原文作者:倪妮原文地址:《信息网站的未来》是网易科技刊登时的标题。注:以下仅截取提及玩聚网的部分文字。作者:倪妮 出处:《环球企业家》2009年2月20号刊 第3…

细谈eclipse拓展网站项目集锦----my note

2019独角兽企业重金招聘Python工程师标准>>> 使用eclipse有一些时间啦,也试着开发一些网站project,不是很熟,也用zend studio,后放弃啦。 我的一些经验 1, 使用eclipse开发jsp网站项目,入门篇 …

vue打包成app方法_如何给手机网站封壳快速打包封装成APP?

如果你一个手机站,想给网站加个壳,封装成一个APP。打开显示的还是网站,就是多了启动页面,可以的话能在加上加载页面,标签导航栏,可以实现吗?我的回答是肯定的,现在APP的开发成本很高…

gorm preload 搜索_上海网站SEO优化外包服务公司,百度搜索优化外包服务

原标题:上海网站SEO优化外包服务公司,百度搜索优化外包服务SEO,是利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。目的是让其在行业内占据领先地位,获得品牌收益。seo搜索优化具体长期稳定流量,推广费用极低的…

网站是不是php是什么意思,php网站是什么意思?

首先你要先了解PHP是什么意思:通俗讲PHP是一个脚本语言。PHP,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。它是一种在服务器端执行的,被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中。语言的风格有…

织梦手机端html不适配,织梦DedeCMS手机wap网站图片不自适应解决办法

在安装调试跟版网手机版网站的时候,发现一个问题,图片无法很好的适应屏幕,宽度可以与屏幕同宽,而高度却没有按比例调整,导致图片看起来像被挤扁了一样,为什么会这样呢?一般为了要达到图片自适应…

SEOer未来之路到底在哪里?

从开始学习SEO,一直走到今天,已经有将近6年的时间,期间走走停停由于一些原因离开过一段时间这个圈子,和所有的站长朋友一样经历着彷徨、迷茫以及对未来职业的不确定,但是依旧坚持了下来,突发奇想就把自己对…