`
yuanlei18
  • 浏览: 3569 次
  • 性别: 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,jsp读取远程图片到本地服务器

    在Java和JSP开发中,有时我们需要处理在线编辑器上传的内容,这可能涉及到从Web页面中获取远程图片并将其保存到本地服务器。这样的功能对于确保网站的性能和用户体验至关重要,因为将图片本地化可以减少加载时间,...

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

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

    java+Servlet图片上传下载

    在这个"java+Servlet图片上传下载"的项目中,我们将深入探讨如何利用Java Servlet实现图片的上传和下载功能,这对于构建动态网站或者Web应用是非常重要的。 首先,我们要理解Servlet的工作原理。Servlet是Java的一...

    Java网络编程第三版.pdf

    《Java网络编程第三版》是Java开发者深入理解网络编程的重要参考资料。这本书主要涵盖了Java平台上的网络应用程序开发,从基础概念到高级技术,为读者提供了一套全面的学习路径。以下是本书中涉及的一些关键知识点:...

    java JDK1.8版本下载

    JDK1.8是Oracle公司发布的Java平台标准版(Java SE)的一个重要版本,它在2014年3月18日正式发布,引入了许多新的特性和改进。 **新特性** 1. **Lambda表达式**:这是JDK1.8最重要的特性之一,引入了函数式编程的...

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

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

    java网络编程英文高清完整第四版.pdf下载

    前几天看到公司一个大神看技术文档,打眼瞟了一下,全是英文的表示直接看看不到。但是大神不一样,人家是硕士哦,英文杠杠的,但是自己心里也想看...java网络编程第四版 java_concurrency_in_practice.pdf Java并发实践

    java访问https网址下载文件

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

    CSDN博客下载器v2.2

    好消息:CSDN博客下载器v2.0版本增加导出PDF文件功能,方便查看图片与文章。 在无网络环境,也可以看自己的一些文章。当然如果您发现CSDN博客的一些文章值得收藏,你也可以使用本软件轻松的下载到您的电脑。 该版本...

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

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

    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源码包3

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

    java 17 window 安装包

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

    java版本websocket实例下载

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

    java-多线程下载器(支持断点续传、线程加减)包含源码和可运行jar包 第二版

    3、可查看下载器“功能介绍”了解下载器具体功能。 功能介绍; 1、基本下载功能; 2、支持多任务多线程同时下载; 3、每个任务的线程数由用户在新建任务时自定义,缺省为5个线程; 4、任务下载过程中可以点击“线程...

    java 开发工具 jdk 1.4 免安装版

    Java开发工具JDK 1.4免安装版是一款专为编程人员设计的Java开发环境,无需繁琐的安装过程,可以直接解压使用。JDK(Java Development Kit)是Oracle公司提供的用于开发Java应用程序的重要软件包,它包含了Java编译器...

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

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

    Java(TM) Platform SE binary 7.70U I586完整版

    Java(TM) Platform SE Binary 7.70U I586是Oracle公司(原SUN公司)发布的Java标准版(Java Standard Edition)的特定版本,主要用于个人计算机系统。这个版本的Java平台集成了JRE(Java Runtime Environment)和...

    Head First Java 中文高清版pdf

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

Global site tag (gtag.js) - Google Analytics