zoukankan      html  css  js  c++  java
  • java版模拟浏览器下载百度动漫图片到本地。

      1 package javaNet.Instance.ImageDownload;
      2 
      3 import java.io.BufferedReader;
      4 import java.io.File;
      5 import java.io.FileOutputStream;
      6 import java.io.IOException;
      7 import java.io.InputStream;
      8 import java.io.InputStreamReader;
      9 import java.net.MalformedURLException;
     10 import java.net.URL;
     11 import java.util.ArrayList;
     12 import java.util.regex.Matcher;
     13 import java.util.regex.Pattern;
     14 
     15 public class DownloadImgs {
     16 
     17     private String url=null;
     18     
     19     public DownloadImgs(String url) {
     20         this.url=url;
     21     }
     22     
     23     //----------------------------------gethtml start-----------------------------
     24     /**
     25      * visit the baidu.img page to get the html
     26      * @return inputStream
     27      * @throws IOException 
     28      * @throws MalformedURLException
     29      */
     30     public InputStream GetBaiduImgHtml_Stream() throws IOException,MalformedURLException {
     31         URL img_Url=new URL(url);
     32         return img_Url.openStream();
     33     }
     34     
     35     /**
     36      * convert the stream to the string
     37      * @param inStrm
     38      * @return string of the page
     39      */
     40     public String InputStreamToString(InputStream inStrm){
     41         BufferedReader reader=new BufferedReader(new InputStreamReader(inStrm));
     42         StringBuilder sb=new StringBuilder();
     43         
     44         String  line=null;
     45         
     46         try {
     47             while((line=reader.readLine())!=null){
     48                 sb.append(line+'
    ');
     49               }
     50             } 
     51         catch (IOException e) 
     52         {
     53             e.printStackTrace();
     54         }
     55         finally 
     56         {
     57             try 
     58             {
     59                 inStrm.close();
     60             } 
     61             catch (IOException e)
     62             {
     63                 e.printStackTrace();
     64             }
     65         }
     66         return sb.toString();
     67     }
     68 
     69     /**
     70      * get the origin page of baidu.img
     71      * @return
     72      * @throws MalformedURLException
     73      * @throws IOException
     74      */
     75     public String GetBaiduImgHtml_Page() throws MalformedURLException, IOException
     76     {
     77         return this.InputStreamToString(this.GetBaiduImgHtml_Stream());
     78     }
     79     /**
     80      * test whether url have been visited the image page,and get the page. 
     81      * @param page
     82      */
     83     public void Display_HtmlPage(String page)
     84     {
     85         System.out.println(page);
     86     }
     87     //-------------------------gethtml end----------------
     88     //-------------------------paretoimgurllist start-----
     89     public ArrayList<String> ParsePageToImgList(String page,String imgPa)
     90     {
     91         ArrayList<String> imgList=new ArrayList<String>();
     92         Pattern pattern=Pattern.compile(imgPa);
     93         Matcher matcher=pattern.matcher(page);
     94         while(matcher.find())
     95         {
     96             imgList.add(matcher.group(1));
     97         }
     98         return imgList;
     99     }
    100     //------------------------paretoimgurllist end---------
    101     //------------------------DownloadFile  start----------
    102     public  boolean DownloadFile(String imgUrl,int index,String path)
    103     {
    104         try
    105         {
    106             File f=new File(path+"\"+index+".jpg");
    107             System.out.println("下载:"+imgUrl);
    108             URL url=new URL(imgUrl);
    109             InputStream ins=url.openStream();
    110             FileOutputStream fout=new FileOutputStream(f);
    111             byte[] buffer=new byte[2048];
    112             int bytes_number;
    113             while((bytes_number=ins.read(buffer))!=-1)
    114             {
    115                 fout.write(buffer,0,bytes_number);
    116                 fout.flush();
    117             }
    118             ins.close();
    119             fout.close();
    120         }
    121         catch(Exception e)
    122         {
    123             System.out.println("下载失败!");
    124             e.printStackTrace();
    125             return false;
    126         }
    127         System.out.println("下载完成...");
    128         return true;
    129     }
    130     //------------------------DownloadFile  end----------
    131     
    132     //------------------------mkDir  start----------
    133     /**
    134      * make a direction for download the images in the native disk.
    135      * @param path the native path
    136      * @return is success
    137      */
    138     public void MkDir(String path)
    139     {
    140         File dir=new File(path);
    141         if(!dir.exists())
    142         {
    143             dir.mkdirs();
    144         }
    145     }
    146     //------------------------mkDir  end------------
    147     
    148     public void Display_ArrayList(ArrayList<String> list)
    149     {
    150         for(String temp:list)
    151         {
    152             System.out.println(temp);
    153         }
    154     }
    155     
    156     public static void main(String[] args) throws MalformedURLException, IOException 
    157     {
    158         String imgPa=""objURL":"(.*?)"";
    159         String path="F:\photos";
    160         int index=0;
    161         DownloadImgs downloadimgs=new DownloadImgs("http://image.baidu.com/search/index?"
    162                 + "tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&sf=1"
    163                 + "&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0"
    164                 + "&istype=2&ie=utf-8&word=%E5%8A%A8%E6%BC%AB&oq=%E5%8A%A8%E6%BC%AB&rsp=-1");
    165         //downloadimgs.Display_HtmlPage(downloadimgs.GetBaiduImgHtml_Page());    
    166         String htmlPage=downloadimgs.GetBaiduImgHtml_Page();
    167         ArrayList<String> imgList=downloadimgs.ParsePageToImgList(htmlPage, imgPa);
    168         //downloadimgs.Display_ArrayList(imgList);
    169         downloadimgs.MkDir(path);
    170         for(String imgUrl:imgList)
    171             downloadimgs.DownloadFile(imgUrl, (index++)+1, path);
    172         
    173         System.out.println("一共下载了"+index+"个图片。");
    174     }
    175 }
  • 相关阅读:
    [NPM] Avoid Duplicate Commands by Calling one NPM Script from Another
    [Algorithm] Dynamic programming: Find Sets Of Numbers That Add Up To 16
    [React] Refactor a Class Component with React hooks to a Function
    [Algorithm] Construct a Binary Tree and Binary Search
    设计模式(装饰者模式)
    IOS设计模式之二(门面模式,装饰器模式)
    IOS设计模式之三(适配器模式,观察者模式)
    linux内核源码阅读之facebook硬盘加速flashcache之五
    IOS设计模式之四(备忘录模式,命令模式)
    DRP总结
  • 原文地址:https://www.cnblogs.com/593213556wuyubao/p/4976799.html
Copyright © 2011-2022 走看看