比如一个你懂的网站,www.xxx.com/images这个目录下存放的是这个网站的所有图片,而且可以直接在地址栏上敲出路径获取图片。。怎样才能用代码实现获取所有的图片并保持在自己的电脑上??
解决方案 »
- 上传2G以上的大文件寻求最佳方案?
- hibernate3.6 支持多态查询?
- 关于从数据库取数发送性能问题
- Xml Document对象转换为UTF-8编码字符串,有时中文会有乱码
- hibernate问题: 多表查询,如何读取结果?
- 如何获取checkbox的值?很急,请高手指点
- jsdk1.4+tomcat5.0 模式下Class 文件放到哪里啊﹗
- 如何在ActionForm中获得与特定locale相关的MessageResources?
- 向servlet传递对象是总是提示java.io.EOFException!里面是我写的代码
- Hibernate学习交流
- 关于移除xml之中><之间的空格
- java读ldap,只能读500条数据?急!!!
PS :我全删了,没传播。不要跨省啊!
获取文件比较容易,用httpconnection就行。。
虽然功能类似但好像和楼主的要求不符,楼主是在网络上批量下载,看看楼下有没有高人
今天上班打酱油,自己也写了个玩一下。。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class test { public static void main(String[] args) throws Exception{
searchFile(new File("E:/oracle"));
}
public static void searchFile(File file) throws Exception {
if(file.isFile()) {
if(file.getName().toLowerCase().lastIndexOf(".txt") != -1) {
moveFile(file);
}
} else {
File[] files = file.listFiles();
for(File f:files) {
searchFile(f);
}
}
}
public static void moveFile(File file) throws Exception { String str = null;
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("e:/所有的内容.txt",true);
BufferedWriter bw = new BufferedWriter(fw);
while((str = br.readLine()) != null) {
bw.write(str);
bw.newLine();
}
br.close();
fr.close();
bw.close();
fw.close();
}
}
要获得目录文件列表的话,需要站点管理员提供,比如打开IIS里的directory browsing的选项或者提供一个文件目录页
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.filters.OrFilter;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;public class URLParse {
public static void main(String[] args) {
try {
Parser parser = new Parser("http://slide.sports.sina.com.cn/euro2012/slide_2_31402_29988.html");
parser.setEncoding("gb2312");
//提取链接
NodeFilter frameFilter = new NodeFilter() {
public boolean accept(Node node) {
if (node.getText().startsWith("frame src=")) {
return true;
} else {
return false;
}
}
};
//过滤出图片
OrFilter orFilter = new OrFilter(new NodeClassFilter(LinkTag.class), new
NodeClassFilter(ImageTag.class));
OrFilter linkFilter = new OrFilter(orFilter, frameFilter);
NodeList nodelist = parser.extractAllNodesThatMatch(linkFilter);
//循环取得image标签
for (int i = 0; i < nodelist.size(); i++) {
Node tag = nodelist.elementAt(i);
if (tag instanceof ImageTag)
{
ImageTag image = (ImageTag) nodelist.elementAt(i);
String urlstr = image.getImageURL();
InputStream is;
OutputStream os;
int len;
if(urlstr.endsWith("jpg") || urlstr.endsWith("gif")){
System.out.println(urlstr);
//下载到本地目录
byte[] buf = new byte[102400];
try {
URL url = new URL(urlstr);
String suffix = urlstr.substring(urlstr.lastIndexOf("."),urlstr.length()); try {
is = url.openConnection().getInputStream();
os = new FileOutputStream("d:/downloadimage/" + i + suffix);
while((len = is.read(buf)) != -1){
os.write(buf,0,len);
}
os.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
} } }catch (ParserException e) {
e.printStackTrace();
}
}
}刚写的,楼主试下吧。
要引入包 htmlparser.jar,htmllexer.jar