package com.jsoup;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import org.jsoup.nodes.*;
import org.jsoup.select.*;
import org.jsoup.*;
/**
* 通过Html解析实现图片的批量采集
*
* @author 郭建波
* @version v.1
* @date 2014-5-9
* */
public class HtmlJsoup {
/**
* 跟据网页和编码获取网页的内容和源代码
*
* @param url
* @param encoding
* */
public static String getHtmlResourceByURL(String url, String encoding) {
StringBuffer buffer=new StringBuffer();
URL urlojb=null;
URLConnection UC=null;
InputStreamReader in =null;
BufferedReader reader=null;
try {
// 建立网络链接
urlojb = new URL(url);
// 打开网络链接
UC = urlojb.openConnection();
// 创建输入流
in= new InputStreamReader(UC.getInputStream(),
encoding);
// 建立一个缓冲流
reader = new BufferedReader(in);
String line=null;
while((line=reader.readLine())!=null){
//一行一行的追加
buffer.append(line+"\r\n");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(in!=null){
in.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return buffer.toString();
}
/**
* 跟据图片的URL下载图片到本地
*
* */
public static void downImages(String filePath,String imageUrl){
//获取图片名称
String fileName = imageUrl.substring(imageUrl.lastIndexOf("/"));
//创建文件的目录结构
File files = new File(filePath);
//判断如果没有文件夹
if(!files.exists()){
//建立文件夹
files.mkdirs();
}
URL url;
try {
//获取URL的地址
url = new URL(imageUrl);
//打开网络链接
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
InputStream is =connection.getInputStream();
File file=new File(filePath+fileName);
FileOutputStream out=new FileOutputStream(file);
int i=0;
while((i=is.read())!=-1){
out.write(i);
System.out.println("下载图片成功");
}
is.close();
out.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
* 主函数
*
*/
public static void main(String[] args) {
// 通过输入一个网址,更具网页的编码获取源代码
String htmlSource = getHtmlResourceByURL("http://tech.qq.com", "GB2312");
//System.out.println(htmlSource);
//解析网页的源代码
Document document = Jsoup.parse(htmlSource);
//获取所有图片的地址
Elements elements = document.getElementsByTag("img");
for(Element element:elements){
String imgSrc=element.attr("src");
System.out.println("正在下载图片地址");
//下载图片
downImages("d:/mymessage", imgSrc);
}
}
}
欢迎大家加入java资源免费分享群,群号:814657026
通过Html解析实现图片批量采集
最新推荐文章于 2023-08-03 16:12:05 发布