国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

詳解JAVA抓取網(wǎng)頁(yè)的圖片,JAVA利用正則表達(dá)式抓取網(wǎng)站圖片

2019-11-26 13:25:31
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

利用Java抓取網(wǎng)頁(yè)上的所有圖片:

用兩個(gè)正則表達(dá)式:

1、匹配html中img標(biāo)簽的正則:<img.*src=(.*?)[^>]*?>

2、匹配img標(biāo)簽中得src中http路徑的正則:http:/"?(.*?)(/"|>|//s+)

實(shí)現(xiàn):

package org.swinglife.main;  import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern;  /***  * java抓取網(wǎng)絡(luò)圖片  * @author swinglife  *  */ public class CatchImage {    // 地址   private static final String URL = "http://www.csdn.net";   // 編碼   private static final String ECODING = "UTF-8";   // 獲取img標(biāo)簽正則   private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>";   // 獲取src路徑的正則   private static final String IMGSRC_REG = "http:/"?(.*?)(/"|>|//s+)";       public static void main(String[] args) throws Exception {     CatchImage cm = new CatchImage();     //獲得html文本內(nèi)容     String HTML = cm.getHTML(URL);     //獲取圖片標(biāo)簽     List<String> imgUrl = cm.getImageUrl(HTML);     //獲取圖片src地址     List<String> imgSrc = cm.getImageSrc(imgUrl);     //下載圖片     cm.Download(imgSrc);   }         /***    * 獲取HTML內(nèi)容    *    * @param url    * @return    * @throws Exception    */   private String getHTML(String url) throws Exception {     URL uri = new URL(url);     URLConnection connection = uri.openConnection();     InputStream in = connection.getInputStream();     byte[] buf = new byte[1024];     int length = 0;     StringBuffer sb = new StringBuffer();     while ((length = in.read(buf, 0, buf.length)) > 0) {       sb.append(new String(buf, ECODING));     }     in.close();     return sb.toString();   }    /***    * 獲取ImageUrl地址    *    * @param HTML    * @return    */   private List<String> getImageUrl(String HTML) {     Matcher matcher = Pattern.compile(IMGURL_REG).matcher(HTML);     List<String> listImgUrl = new ArrayList<String>();     while (matcher.find()) {       listImgUrl.add(matcher.group());     }     return listImgUrl;   }    /***    * 獲取ImageSrc地址    *    * @param listImageUrl    * @return    */   private List<String> getImageSrc(List<String> listImageUrl) {     List<String> listImgSrc = new ArrayList<String>();     for (String image : listImageUrl) {       Matcher matcher = Pattern.compile(IMGSRC_REG).matcher(image);       while (matcher.find()) {         listImgSrc.add(matcher.group().substring(0, matcher.group().length() - 1));       }     }     return listImgSrc;   }    /***    * 下載圖片    *    * @param listImgSrc    */   private void Download(List<String> listImgSrc) {     try {       for (String url : listImgSrc) {         String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());         URL uri = new URL(url);         InputStream in = uri.openStream();         FileOutputStream fo = new FileOutputStream(new File(imageName));         byte[] buf = new byte[1024];         int length = 0;         System.out.println("開始下載:" + url);         while ((length = in.read(buf, 0, buf.length)) != -1) {           fo.write(buf, 0, length);         }         in.close();         fo.close();         System.out.println(imageName + "下載完成");       }     } catch (Exception e) {       System.out.println("下載失敗");     }   }     } 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 邵武市| 潢川县| 钟山县| 平泉县| 时尚| 鄂温| 沙河市| 临汾市| 日照市| 百色市| 子长县| 湛江市| 乌拉特中旗| 栾城县| 洪泽县| 乌拉特中旗| 乌鲁木齐县| 浦城县| 游戏| 丹寨县| 元谋县| 泰安市| 葫芦岛市| 商洛市| 常宁市| 弥渡县| 田阳县| 竹山县| 潮州市| 定安县| 揭阳市| 营口市| 河间市| 株洲县| 浦县| 陕西省| 响水县| 南通市| 澄江县| 仁怀市| 西宁市|