jsoup提取连接下载网站图片

7 篇文章 0 订阅
public class DownImages {
     private static int COUNT = 0 ;
     private static int DOWN_COUNT = 0 ;
     
     public static void jsoupHTML(String urlPath) throws Exception{
         Document doc = Jsoup.connect(urlPath).timeout( 1000000 ).get();
         //:当前页中的图片
         Elements srcLinks = doc.select( "img[src$=.jpg]" );
         for (Element link : srcLinks) {
             //:剔除标签,只剩链接路径
             String imagesPath = link.attr( "src" );
             System.out.println( "当前访问路径:" +imagesPath);
             getImages(imagesPath, "d://images//0000" + ++COUNT + ".jpg" );
         }
         
         //:提取网站中所有的href连接
         Elements linehrefs = doc.select( "a[href]" );
         
         for (Element linehref : linehrefs) {
             String lihr = linehref.attr( "href" );
             if (lihr.length()> 4 ){
                 String ht = lihr.substring( 0 , 4 );
                 String htt = lihr.substring( 0 , 1 );
                 if (!ht.equals( "http" ) && htt.equals( "/" )){
                     lihr = urlPath + lihr;
                 }
                 if (lihr.substring( 0 , 4 ).equals( "http" )){
                     Document docs = Jsoup.connect(lihr).timeout( 1000000 ).get();
                     Elements links = docs.select( "img[src$=.jpg]" );
                     for (Element link : links) {
                         //:剔除标签,只剩链接路径
                         String imagesPath = link.attr( "src" );
                         System.out.println( "当前访问路径:" +imagesPath);
                         getImages(imagesPath, "d://images//0000" + COUNT++ + ".jpg" );
                     }
                 }
             }
         }
     }
     
     
     /**
      * @param urlPath 图片路径
      * @throws Exception
      */
     public static void getImages(String urlPath,String fileName) throws Exception{
         URL url = new URL(urlPath); //:获取的路径
         //:http协议连接对象
         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
         conn.setRequestMethod( "GET" );
         conn.setReadTimeout( 6 * 10000 );
         if (conn.getResponseCode() < 10000 ){
             InputStream inputStream = conn.getInputStream();
             byte [] data = readStream(inputStream);
             if (data.length>( 1024 * 10 )){
                 FileOutputStream outputStream = new FileOutputStream(fileName);
                 outputStream.write(data);
                 System.err.println( "第" + ++DOWN_COUNT + "图片下载成功" );
                 outputStream.close();
             }
         }
         
     }
     
     /**
      * 读取url中数据,并以字节的形式返回
      * @param inputStream
      * @return
      * @throws Exception
      */
     public static byte [] readStream(InputStream inputStream) throws Exception{
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         byte [] buffer = new byte [ 1024 ];
         int len = - 1 ;
         while ((len = inputStream.read(buffer)) !=- 1 ){
             outputStream.write(buffer, 0 , len);
         }
         outputStream.close();
         inputStream.close();
         return outputStream.toByteArray();
     }
     
     public static void main(String[] args) {
         try {
             String urlPath = "http://www.22mm.cc/" ;
             jsoupHTML(urlPath);
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             System.out.println( "共访问" +COUNT+ "张图片,其中下载" +DOWN_COUNT+ "张图片" );
         }
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值