`
songylwq
  • 浏览: 131757 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

突发灵感,看到某网站的搞笑图片挺多,做了一个小java,扫描抠了一些

 
阅读更多

突发灵感,看到某网站的搞笑图片挺多,做了一个小java,扫描抠了一些

这里分享一下

/**
	 * 取得文件的后缀名
	 * @Description: TODO
	 * @param countStr
	 * @return
	 */
	private static String getFileExt(String fileStr){
		return  fileStr.substring(fileStr.lastIndexOf(".") + 1).toLowerCase();
	}

得到文件后缀,保存用

/**
	 * 取得不同的页面地址
	 * @Description: TODO
	 * @param countStr
	 * @return
	 */
	private static String getPagePath(String countStr){
		String pagPath = "http://xxx.xxxx.xxxx.xxx/thread-2:count-1-1.html";
		return pagPath.replaceAll(":count", countStr);
	}

取得页面地址

	/**
	 * 取得图片的url地址
	 * @Description: TODO
	 * @param contextStr
	 * @return
	 */
	private static String getImgSrc(String contextStr){
		if(contextStr.indexOf("\" onload=\"thumbImg(this)\"")<0){
			return null;
		}
		String bigStr = contextStr.substring(contextStr.indexOf("\" onload=\"thumbImg(this)\"")-74,contextStr.indexOf("\" onload=\"thumbImg(this)\""));
		String imgStr = bigStr.substring(bigStr.indexOf("<img src=\"")+10);
		return imgStr;
	}

解析页面代码,将图片的url地址取出

    /**
     * 下载图片
     * @param f 保存的文件
     * @param imgUrl 图片地址
     */
    public static void downloadFile(File f, String imgUrl) {
            byte[] buffer = new byte[8 * 1024];
            URL u;
            URLConnection connection = null;
            try {
                    u = new URL(imgUrl);
                    connection = u.openConnection();
            } catch (Exception e) {
                    System.out.println("ERR:" + imgUrl);
                    return;
            }
            InputStream is = null;
            FileOutputStream fos = null;
            try {
                    f.createNewFile();
                    is = connection.getInputStream();
                    fos = new FileOutputStream(f);
                    int len = 0;
                    while ((len = is.read(buffer)) != -1) {
                            fos.write(buffer, 0, len);
                    }

            } catch (Exception e) {
            	e.printStackTrace();
                f.delete();
            } finally {
                    if (fos != null) {
                            try {
                                    fos.close();
                            } catch (IOException e) {
                            }
                    }
                    if (is != null) {
                            try {
                                    is.close();
                            } catch (IOException e) {
                            }
                    }
            }
            buffer = null;
            // System.gc();
    }

将url图片下载到本地
完整代码下载:http://download.csdn.net/detail/songylwq/4738238

分享到:
评论

相关推荐

    Java设计模式经典搞笑珍藏版

    《Java设计模式经典搞笑珍藏版》这本书以一种轻松幽默的方式介绍了23种经典的设计模式及其在Java中的应用。设计模式是一种软件工程领域中非常重要的概念,它提供了解决特定问题的标准化方法。本书适合不同程度的开发...

    数字旋转方阵(java)

    在本实验中,任务是创建一个Java程序,用于输出顺时针旋转的数字方阵。这个方阵的特性是从中心开始,数字按照顺时针方向填充。给定的代码片段是用C++编写的,但我们可以将其转换为Java语言,并解释其工作原理。 ...

    java多线程,对多线程,线程池进行封装,方便使用

    Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,我们可以通过实现Runnable接口或继承Thread类来创建线程。然而,直接使用线程可能存在一些问题,如资源管理...

    令牌桶Java实现

    以下是一个简单的Java实现示例: ```java import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent....

    Java蓝牙无线技术

    Java蓝牙无线技术是一种基于Java平台的短距离无线通信技术,主要应用于移动设备、个人电脑以及各种物联网设备之间。这项技术允许设备通过低功耗的蓝牙连接进行数据交换,为开发者提供了一种简单、灵活的方式来创建跨...

    JAVA程序与PLC之间的通信

    在IT行业中,编程语言Java与工业自动化设备如PLC(可编程逻辑控制器)之间的通信是一个重要的领域,尤其在实现智能制造和物联网(IoT)应用时。"JAVA程序与PLC之间的通信"这个主题涵盖了许多关键知识点,让我们逐一...

    一个简易的java小程序,源代码很简单!1

    这是我突发奇想一个人编出来的登陆页面,很简单的

    JAVA计算微积分源代码

    某天,突发奇想,有没有计算微积分的程序 找了半天,发现一些如 matlab 、《计算工厂》等软件, 就是没找到,能够以字符串形式输入表示式 并且能够方便JAVA调用的程序 于是花了3天做了一个

    java.7.0.3

    其名称“Java”源于一次偶然,项目团队在品尝Java咖啡时灵感突发,从此这个富有活力的名字便伴随Java语言至今。 Java之所以受到广泛的欢迎和使用,是因为它具备一系列独特的优点。首先,Java具有简单性,它的语法...

    突发事件处理制度.pdf

    【突发事件处理制度】 突发事件处理制度是深圳市汇川技术股份有限公司为应对可能出现的偶发性、严重影响公司运营的事件而制定的预案。该制度遵循预防为主、预防与应急相结合的原则,旨在建立快速响应机制,降低突发...

    java实现限流,封装的工具类

    在Java编程中,限流是一种重要的技术手段,用于控制系统的吞吐量,防止过多的请求导致服务过载或崩溃。本文将深入探讨如何利用Java实现限流,并关注于使用Semaphore作为令牌桶和漏桶算法的实现,以及在数据线程数量...

    NetworkScanner_以太网扫描软件|NetworkScanner_6108.zip

    《网络扫描神器:NetworkScanner——以太网扫描与通讯管理详解》 在信息化时代,网络管理成为企业或个人网络维护的重要一环。NetworkScanner是一款专为以太网设计的扫描软件,它集成了IP、MAC地址扫描、端口检测...

    Java限流实现

    2. **滑动窗口限流**:相比固定窗口,滑动窗口会在时间上分成多个小窗口,每个窗口都有独立的请求数量限制。这种方式可以更好地平滑流量,避免突发流量对系统造成冲击。 3. **漏桶算法**:想象一个有固定容量的桶,...

    java程序设计基础.pdf

    Java程序设计基础是一本旨在帮助初学者快速入门Java编程语言的教材。Java作为一种广泛使用的高级编程语言,具备面向对象、跨平台执行等特性。本书从程序设计语言的发展历程讲起,介绍了从机器语言、汇编语言、高级...

    用 JAVA 开发游戏连连看.rar_java Applet_java qq_jsp

    提起 JAVA ,相信大家也不会陌生了吧, JAVA 是一门相当优秀的语言。目前 JAVA 领域 J2EE 、 ...前段日子我迷上的 QQ 游戏中的“连连看”,游戏之余,突发奇想,也想自己用做一个试试,经过十来天的奋战,终于完成了。

    突发群体性事件应急处置预案扫描.pdf

    突发群体性事件应急处置预案扫描.pdf

    学校突发公共卫生事件应急预案扫描.pdf

    学校突发公共卫生事件应急预案扫描.pdf

    中学突发公共卫生事件应急预案扫描.pdf

    中学突发公共卫生事件应急预案扫描.pdf

    java云盘后端服务器+前端electron前后端分离式+简单部署教程

    云盘源码java后端服务器+前端electron前后端分离式自从学习了一点点electron基础命令(也就是几个标准单词),我就突发奇想,想写一款桌面基本的应用,但是也不知道该写什么demo,然后就这样子,想啊想…,直到发生了...

Global site tag (gtag.js) - Google Analytics