1 packagecom.peidon.html;2
3 importjava.io.BufferedReader;4 importjava.io.File;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7 importjava.io.InputStream;8 importjava.io.InputStreamReader;9 importjava.net.HttpURLConnection;10 importjava.net.URL;11 importjava.net.URLConnection;12
13 importorg.jsoup.Jsoup;14 importorg.jsoup.nodes.Document;15 importorg.jsoup.nodes.Element;16 importorg.jsoup.select.Elements;17
18
19 /**
20 *@authorsunshine21 *@version1.022 * @date:2015年8月15日 上午9:01:1323 * @description: Java开发搜索引擎爬虫24 * jsoup 类似jQuery的强大功能,什么方便解析操作HTML DOM 树25 * 关联jar包 jsoup-1.8.3.jar26 */
27 public classHttpSoup {28
29 public static voidmain(String[] args) {30
31 //根据网址和页面的编码集 获取网页的源代码
32 String htmlResource = getHtmlResourceByUrl("http://www.ui.cn/", "UTF-8");33 //System.out.println(htmlResource);34
35 //解析源代码
36 Document document =Jsoup.parse(htmlResource);37
38 //获取网页的图片39 //网页图片标签
40 Elements elements = document.getElementsByTag("img");41
42 for(Element element : elements){43 String imgSrc = element.attr("src");44 //System.out.println(imgSrc);
45 downImages(imgSrc,"D:\\test\\images\\");46 System.out.println("下载成功:"+imgSrc);47 //System.out.println(imgSrc.substring(imgSrc.lastIndexOf("/")));
48 }49 }50
51 /**
52 * 根据一个图片的URL地址,通过这个URL批量下载图片到服务器的磁盘53 *@paramimageUrl 要下载的服务器地址54 *@paramfilePath 下载完成后保存到服务器的图片地址55 *56 */
57 public static voiddownImages(String imageUrl, String filePath){58 String fileName = imageUrl.substring(imageUrl.lastIndexOf("/"));59
60 try{61 //创建文件的目录
62 File files = newFile(filePath);63 //判断文件是否存在
64 if(!files.exists()){65 files.mkdirs();66 }67 //获取图片文件的下载地址
68 URL url = newURL(imageUrl);69 //连接网络图片地址
70 HttpURLConnection uc =(HttpURLConnection) url.openConnection();71 //获取连接的输出流
72 InputStream is =uc.getInputStream();73
74 //创建文件
75 File file = new File(filePath +fileName);76 //创建输出流,写入文件
77 FileOutputStream out = newFileOutputStream(file);78 int i = 0;79 while((i = is.read()) != -1){80 out.write(i);81 }82 is.close();83 out.close();84 } catch(Exception e) {85 e.printStackTrace();86 }87 }88
89 /**
90 * 根据网址和页面的编码集 获取网页的源代码91 *@paramurl92 *@paramencoding93 *@return
94 */
95 public staticString getHtmlResourceByUrl(String url, String encoding){96
97 //声明一个存储网页源代码的容器
98 StringBuffer buff = newStringBuffer();99
100 URL urlObj = null;101 URLConnection uc = null;102 InputStreamReader in = null;103 BufferedReader reader = null;104 try{105 //建立网络链接
106 urlObj = newURL(url);107
108 //打开网络链连接
109 uc =urlObj.openConnection();110
111 //建立网络的输入流
112 in = newInputStreamReader(uc.getInputStream(),encoding);113
114 //缓冲写入的文件流
115 reader = newBufferedReader(in);116
117 String tempLine = null;118
119 //循环读取文件流
120 while((tempLine = reader.readLine()) != null){121 buff.append(tempLine + "\n"); //循环追加数据
122 }123
124
125
126 } catch(Exception e) {127
128 e.printStackTrace();129 System.out.println("Conection timeout ...");130 } finally{131 if(in != null){132 try{133 in.close();134 } catch(IOException e) {135 e.printStackTrace();136 }137 }138
139 }140
141 returnbuff.toString();142 }143 }