`
yuanlei18
  • 浏览: 3503 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

游久网图片下载器Java版

阅读更多
个人比较喜欢靓图,这就是写程序的动机,好了,进入正题:
悠久网上的图片有两种显示模式,一是全图模式,比如(http://tu.uuu9.com/201103/90777.shtml). 这个程序只针对模式一,查看源代码可以发现一系列图片链接,http://image5.uuu9.com/tu/tu//UploadFiles//201103/201103151618323121_S.jpg
http://image5.uuu9.com/tu/tu//UploadFiles//201103/201103151618323592_S.jpg
http://image5.uuu9.com/tu/tu//UploadFiles//201103/201103151618323592_S.jpg
。。。。
把这些链接贴到地址栏,刷,图片就出来了,但是为什么图片那么小呢,别急,把图片路劲里"_S"去掉,再试试,OK,这次是真实的路径了,我们要做的,就是获取这些路劲,但是,咱是程序员,不可能一个一个copy,然后放到迅雷里去,怎么办呢?我们现在要做的是拿到整个网页的源代码,然后将里面的图片URL给扣出来.
java里有一个URL(Uniform Resource Locator)类,理论咱就不说了,直接拿来用.
URL url = new URL("http://tu.uuu9.com/201103/90777.shtml");//构建了一个URL对象,,
InputStream inputStream = url.openConnection().getInputStream();//获取我们需要的字节流
byte[] bytes = new byte[2048];
int c = 0;
StringBuffer stringBuffer = new StringBuffer();
while((c = inputStream.read(bytes))!=-1){
stringBuffer.append(new String(bytes,0,c));//不要简化操作,会吃亏的
}
title = buffer.substring(buffer.indexOf("<title>")+7,buffer.indexOf("  - 美图频道 - 游久网</title>"));//把图片的标题保存下来,后面有用
现在我们就得到了网页的源代码,使用java的正则,可以取出我们需要的路径
Pattern pattern = Pattern.compile("http://image5.uuu9.com/tu/tu//UploadFiles//\\d+/\\d+_S.jpg");//编译正则
Matcher matcher = pattern.matcher(stringBuffer);//将符合正则表达式的文本放入Matcher对象中
先将stringBuffer重新赋值或清空,或者你可以另外构造一个StringBuffer,然后遍历:
stringBuffer = new StringBuffer();
while(matcher.find()){
stringBuffer.append(matcher.group().replace("_S", "") + "\n");
}
ok,这样我们就获得了完全有地址构成的stringBuffer字符串,下面就是下载了,你可以使用迅雷,但是你也可以使用java程序来下载,不说多的,上代码:
File parent = new File("F:\\image\\"+title);
if(!parent.exists())
parent.mkdirs();
else return;
String[] strings = urls.split("\n");
for (String string : strings) {
URL url = new URL(string);//有用到了这个类,但这次可不是获取源代码了
BufferedInputStream in = new BufferedInputStream(url.openStream());//还是获取流
File img = new File(parent,string.substring(string.lastIndexOf("/")));//创建图片文件
img.createNewFile();
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(img));//输出流
byte[] buf = new byte[2048];//缓存
int c;
while ((c = in.read(buf)) != -1) {
out.write(buf, 0, c);//写入文件
}
in.close();
out.close();
}
OK了,这个页面的图片就搞定了,但是,这是我们要的吗,显然不是,为了一个页面,费费这么打劲,显然不值,打开下面这个页面http://tu.uuu9.com/List/List_8.shtml
是不是有好多图,哈哈,这就是我们的目标了,从这个地方我总共down了12129张MM靓图,这要是怎么做的呢,依然是打开源文件,找找,哈,找到
http://tu.uuu9.com/201103/90777.shtml
http://tu.uuu9.com/201103/90776.shtml
。。。。
这正是套图的地址,这次我们要做的,就是找出所有的套图地址,然后,用上面的方法,代码:
StringBuffer urls = new StringBuffer();
File file = new File("f:\\image\\path.txt");
public Test3() throws Exception {
int width = 50;
int height = 100;
int x = (int) ((Toolkit.getDefaultToolkit().getScreenSize().getWidth() - width) / 2);
int y = (int) ((Toolkit.getDefaultToolkit().getScreenSize().getHeight() - height) / 2);
Container container = getContentPane();
JPanel jPanel = new JPanel();
container.add(jPanel);
setBounds(x, y, width, height);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
JButton jButton = new JButton("EXIT");
jPanel.add(jButton);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(urls.toString());
fileWriter.close();
System.exit(0);
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
Test2 test2 = new Test2();
String read;
while((read = bufferedReader.readLine())!=null){
urls.append(read+"\n");
}
while(urls.length()!=0){
test2.download(test2.getPath(urls.substring(0, urls.indexOf("\n"))).toString());
urls.delete(0, urls.indexOf("\n")+1);
}
System.exit(0);
这些代码就懒得说了,各位有兴趣的,就自个看去吧,第一遍博文,别喷。。。
不好意思,有段代码中间删了,现在补上来:
package com.test;

import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test4 {
StringBuffer buffer = new StringBuffer();
FileWriter fileWriter;
public Test4() {
try {
fileWriter = new FileWriter("f:\\path.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Test4 test4 = new Test4();
test4.down("http://tu.uuu9.com/List/List_8.shtml");
for (int i = 37; i > 0; i--) {
test4.down("http://tu.uuu9.com/List/List_8_"+i+".shtml");
}
}
void down(String _url){
System.out.println(_url);
URL url;
try {
url = new URL(_url);
InputStream inputStream = url.openConnection().getInputStream();
byte[] bytes = new byte[2048];
int c = 0;
while((c = inputStream.read(bytes))!=-1) {
buffer.append(new String(bytes,0,c));
}
buffer = new StringBuffer(buffer.substring(buffer.indexOf("leftPart"), buffer.lastIndexOf("rightPart")));
Pattern pattern = Pattern.compile("http://tu.uuu9.com/\\d{6}/\\d{5}.shtml");
Matcher matcher = pattern.matcher(buffer);
while(matcher.find()){
fileWriter.append(matcher.group()+"\n");
}
inputStream.close();
fileWriter.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这段代码是用来获取列表路劲,然后保存到文件里的,如果是直接下载,可以将这段代码和上面的最后一步合在一起
分享到:
评论

相关推荐

    Java下载器的简单实现及实时进度和速度获取

    在Java编程领域,开发一个下载器是常见的任务,特别是对于处理大文件或网络资源时。本文将深入探讨如何实现一个简单的Java下载器,并且重点讲解如何实现下载的实时进度显示和速度计算。以下是对这个主题的详细阐述:...

    java根据模版生成带图片的word文档

    下面我们将深入探讨如何使用Java根据模板生成带有图片的Word文档。 首先,我们要理解“将doc模版另存为xml格式”的步骤。Microsoft Word的.doc文件实际上是一种二进制格式,但可以通过“另存为”XML文档,将内容...

    Java 从网络中读取图片 转换成Base64字符串

    在Java编程中,将网络上的图片读取并转换为Base64字符串是一项常见的任务,尤其在Web开发中,这样的操作可以用于数据传输或者存储。Base64是一种编码方式,能够将二进制数据转化为可打印的ASCII字符,方便在网络上...

    java访问https网址下载文件

    本篇将详细介绍如何在Java中实现这一功能,特别是在遇到需要下载证书的情况。 首先,你需要引入Java的HTTPS相关的库,这通常包含在`javax.net.ssl`包中。Java的`HttpURLConnection`类是处理HTTP和HTTPS请求的基础,...

    java源码包---java 源码 大量 实例

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA8API-官方文档下载-中文版

    这份中文版的官方文档使得国内开发者能够更加方便地理解和使用Java 8的新特性,提升开发效率。 **核心语言特性** 1. **lambda表达式**: Java 8引入了函数式编程的概念,通过lambda表达式可以简洁地表示匿名函数,...

    用java一维码批量生成(条码)图片

    本文将详细讲解如何使用Java语言来批量生成一维码图片,以及可能遇到的问题和解决方案。 首先,Java中实现一维码生成通常会依赖一些库,如ZXing(Zebra Crossing)或者Barbecue。ZXing是一个开源项目,提供了多种...

    java用ffmpeg截取视频图片

    Java 使用 FFmpeg 截取视频图片是一个常见的任务,它涉及到多媒体处理、命令行操作和跨平台编程。FFmpeg 是一个强大的开源工具集,用于处理音频和视频文件,包括编码、解码、转码、流处理等功能。在 Java 中,我们...

    java利用openoffice,把word,execl,ppt转成图片,

    Entry.java这个类的原理是先通过OfficeToPDF.java把文档转成pdf,然后再通过Pdf2Jpg.java这个类把PDF转成JPG或者PNG,想转成什么格式图片在Pdf2Jpg.java这个类当中设置一下,代码经过测试,完全没有问题,如果碰到...

    Java 6.0 完整安装版

    Java开发工具包(JDK)是Java编程的必备工具,包含了编译器(javac)、调试器(jdb)、文档生成器(javadoc)等工具。虽然在描述中没有明确提到JDK,但通常一个完整的Java安装包会包含JDK,这使得开发者可以编写、...

    谷歌浏览器java插件

    谷歌浏览器java 插件,让你可以再浏览器中运行java 程序

    java实现对图片的各种操作

    java实现对图片裁剪,并把裁剪新图片保存,按倍率缩小、放大图片,重置图形的边长大小,拼接图片等等操作 使用Java进行图像处理的一些基础操作,java实现对图片的各种操作下载

    老张百度文库下载器(目前最好的百度文档下载器)

    5. **高兼容性**:老张百度文库下载器不仅支持各种格式的文档,还能确保文档格式的完整性和阅读体验,无论是文字、图片还是表格,都能清晰呈现。 6. **易于操作**:软件界面简洁明了,用户界面友好,操作流程直观,...

    java微信公众号上传下载图片,springmvc demo

    2、本项目适合学习微信开发 (微信接入,上传及下载临时素材文件,微信jssdk图片上传及下载) url(http://localhost:8082/com.demo.weixin/uploadImg.html)载图片,微信jssdk配置,上传及下载文件,springmvc ...

    java源码包2

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java版本websocket实例下载

    这个注解定义了WebSocket服务的URL路径,还可以包含配置器以自定义行为。 4. **生命周期方法** WebSocket端点类通常包含以下生命周期方法: - `onOpen`: 连接打开时调用,可以进行初始化操作。 - `onMessage`: ...

    java 17 window 安装包

    - 下载Java 17的Windows x64安装包,即Java_17_windows_x64.exe。 - 运行安装程序,按照向导的指示进行,可以选择自定义安装路径。 - 在安装过程中,可以设置环境变量,包括`JAVA_HOME`,`PATH`等,以确保系统...

    java学习PDF下载地址全 百度云盘下载

    11. **Java EE**:如果PDF深入,可能会介绍Java企业版,包括Servlet、JSP、EJB、JDBC等Web开发技术。 12. **设计模式**:介绍常见的设计模式,如单例、工厂、观察者等,提升代码的可读性和可维护性。 此外,这份...

    Head First Java 中文高清版pdf

    《Head First Java》是一本非常受欢迎的Java编程学习书籍,其中文高清版为中国的Java初学者提供了方便的学习资源。这本书以其独特的教学方式,通过丰富的图像、幽默的插图和互动性的设计,帮助读者以轻松有趣的方式...

    JAVA API官方中文版手册chm文件文档

    JAVA API官方文档中文版软件包 java.applet java.awt java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image ...

Global site tag (gtag.js) - Google Analytics