在前面的基础上做了一点修改,直接上源码,代码有注释
package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class Util {
/**
* 只下载一个页面
* 编码:utf-8
* @param uri
* @throws Exception
*/
public static void DownLoadPage(String uri) throws Exception{
URL url=new URL(uri);
Document doc=Jsoup.parse(uri);
/**
* 获取路径,根据路径创建目录,只有域名的需要单独创建目录,如:http://www.baidu.com/
*/
String path=url.getPath();
String title = null;//网页保存名字
File mkd;//网页保存目录
if(path.length()!=0){
title=path.substring(path.lastIndexOf("/"));//路径为/Info/show-27818.html
path=path.substring(path.indexOf("/"), path.lastIndexOf("/"));//截取路径/Info/做为目录
mkd=new File("E:/NewPage"+path);
if(!mkd.exists()){//目录不存在
mkd.mkdirs();
}
}else{//路径不存在
/**
* 网页的标题有的包含特殊字符不能命名文件名称,这里就不过滤替换了
*/
title=doc.getElementsByTag("title").text();
if(title.length()==0){
title="未识别.html";
}else{
title=title+".html";
}
mkd=new File("E:/NewPage/");
if(!mkd.exists()){//目录不存在
mkd.mkdir();
}
}
BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(mkd+title)),"utf-8"));
String line;
while((line=br.readLine())!=null){
bw.write(line);
}
System.out.println("向本地写入完毕:"+mkd+title);
br.close();
bw.close();
}
}