`
yuanlei18
  • 浏览: 3540 次
  • 性别: 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中的网络请求库,如HttpURLConnection、Apache ...

    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的一...

    手机PDF阅读器java版

    本文将深入探讨Java版手机PDF阅读器的设计、实现原理以及使用方法。 一、PDF阅读器概述 PDF阅读器主要负责解析PDF文件结构,将其转换成可显示的图像,并提供浏览、搜索、注释等互动功能。在Java平台上开发PDF阅读器...

    Java网络编程第三版.pdf

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

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

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

    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用ffmpeg截取视频图片

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

    java操作mongoDB实现文件上传预览打包下载

    对于"java操作mongoDB实现文件上传预览打包下载"这个主题,我们将深入探讨如何利用Java与MongoDB交互,实现文件的上传、下载、预览以及打包下载等功能。 首先,我们需要在Java项目中引入MongoDB的驱动库,通常是...

    java源码包3

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

    java源码包2

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

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

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

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

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

    Head First Java 中文高清版pdf

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

    java数据源导出WORD文档(包括图片、表格及文本)

    最近因项目开发的需要,整理了一份用JAVA导出WORD文档,其部署步骤如下: 1、将jacob-1.14.3-x86.dll放在服务器的系统盘(或运行本机的系统):\WINDOWS\system32目录下。 2、将jacob-1.14.3-x86.dll放在JDK 的 bin ...

    java Jacob完美实现word添加图片水印(内附源码及jar包)

    java Jacob完美实现word添加图片水印(内附源码及jar包)。 公司最近让搞Word文档添加水印,所有下载的文档需要添加公司印章,搞了好多天才实现,利用Jacob完美实现word添加图片水印(注意需要把dll文件放到jdk的bin...

    java使用HttpClient通过url下载文件到本地

    综上所述,通过Java的HttpClient库,可以在Eclipse环境中编写程序,实现从指定URL下载文件到本地的功能。通过理解HttpClient的工作原理和提供的API,开发者可以构建出稳定、高效的文件下载解决方案。

Global site tag (gtag.js) - Google Analytics