zoukankan      html  css  js  c++  java
  • Java爬取 百度图片Google图片Bing图片

    先看看抓取的结果。 

    8个Java类: 

      • Startup.java - main函数
      • ImageCrawler.java - Crawler基类
      • BaiduImageCrawler.java - 百度图片的具体爬取实现
      • GoogleImageCrawler.java - Google图片的具体爬取实现
      • BingImageCrawler.java - Bing图片的具体爬取实现
      • ImageWorker.java - 定时从Queue中取图片URL下载(默认开启100个)
      • ImageDownloader.java - 图片下载
      • MD5Checksum.java - 文件MD5计算(文件去重)
    1. public class BaiduImageCrawler extends ImageCrawler {  
    2.       
    3.     //tn:resultjsonavatarnew  
    4.     //ie:utf-8 字符编码(ie输入 oe输出)  
    5.     //word:美女 搜索关键字  
    6.     //pn:60 开始条数  
    7.     //rn:30 显示数量  
    8.     //z:0 尺寸(0全部尺寸 9特大 3大 2中 1小)  
    9.     //1024 自定义尺寸-宽  
    10.     //height:768 自定义尺寸-高  
    11.     //ic:0 颜色(0全部颜色 1红色 2黄色 4绿色 8青色 16蓝色 32紫色 64粉色 128棕色 256橙色 512黑色 1024白色 2048黑白)  
    12.     //s:0 3头像图片  
    13.     //face:0 1面部特写  
    14.     //st:-1 -1全部类型 1卡通画 2简笔画  
    15.     //lm:-1 (6动态图片 7静态图片)  
    16.     //gsm:3c pn值的十六进制数  
    17.     private static final String BAIDU_IMAGE_SEARCH_URL = "http://image.baidu.com/search/avatarjson?tn=resultjsonavatarnew&ie=utf-8&word=%s&pn=%d&rn=%d&z=3&ic=0&s=0&face=0&st=-1&lm=-1&gsm=%s";  
    18.     private static final int PAGE_SIZE = 60;  
    19.     private static final String IMAGE_URL_REG = ""objURL":"(https?://[^"]+)"";  
    20.     private static final Pattern IMAGE_PATTERN = Pattern.compile(IMAGE_URL_REG);  
    21.       
    22.     @Override  
    23.     public String getSearchUrl(String keyword, int page) {  
    24.         int begin = page * PAGE_SIZE;  
    25.         return String.format(BAIDU_IMAGE_SEARCH_URL, keyword, begin, PAGE_SIZE, Integer.toHexString(begin));  
    26.     }  
    27.   
    28.     @Override  
    29.     public int parseImageUrl(ConcurrentLinkedQueue<String> queue, StringBuffer data) {  
    30.         int count = 0;  
    31.         Matcher matcher = IMAGE_PATTERN.matcher(data);  
    32.         while (matcher.find()) {  
    33.             queue.offer(matcher.group(1));  
    34.             count++;  
    35.         }  
    36.         return count;  
    37.     }  
    38.   
    39. }  
    Java代码  收藏代码
    1. public class GoogleImageCrawler extends ImageCrawler {  
    2.       
    3.     //tbm=isch  
    4.     //q=美女 搜索关键字  
    5.     //ijn=0 页码(***Google只提供到0到8页数据!)  
    6.     //start=0 开始条数  
    7.     //tbs=isz:l 搜索条件  
    8.     //  尺寸  
    9.     //  tbs=isz:l 大  
    10.     //  tbs=isz:m 中  
    11.     //  颜色  
    12.     //  tbs=ic:color 彩色  
    13.     //  tbs=ic:gray 黑白  
    14.     //  tbs=ic:trans 透明  
    15.     //  类型  
    16.     //  tbs=itp:face 脸部特写  
    17.     //  tbs=itp:photo 照片  
    18.     //  tbs=itp:clipart 剪贴画  
    19.     //  tbs=itp:lineart 素描画  
    20.     //  tbs=itp:animated 动画  
    21.     //  条件组合  
    22.     //  tbs=isz:l,ic:color,itp:face  
    23.     private static final String GOOGLE_IMAGE_SEARCH_URL = "https://www.google.com/search?tbm=isch&q=%s&ijn=%d&start=%d&tbs=isz:l";  
    24.     private static final int PAGE_SIZE = 100;  
    25.     private static final String IMAGE_URL_REG = ""ou":"(https?://[^"]+)"";  
    26.     private static final Pattern IMAGE_PATTERN = Pattern.compile(IMAGE_URL_REG);  
    27.       
    28.     @Override  
    29.     public String getSearchUrl(String keyword, int page) {  
    30.         int begin = page * PAGE_SIZE;  
    31.         return String.format(GOOGLE_IMAGE_SEARCH_URL, keyword, page, begin);  
    32.     }  
    33.   
    34.     @Override  
    35.     public int parseImageUrl(ConcurrentLinkedQueue<String> queue, StringBuffer data) {  
    36.         int count = 0;  
    37.         Matcher matcher = IMAGE_PATTERN.matcher(data);  
    38.         while (matcher.find()) {  
    39.             queue.offer(matcher.group(1));  
    40.             count++;  
    41.         }  
    42.         return count;  
    43.     }  
    44. }  
    Java代码  收藏代码
      1. public class BingImageCrawler extends ImageCrawler {  
      2.   
      3.     //async=content  
      4.     //q=美女 搜索关键字  
      5.     //first=118 开始条数  
      6.     //count=35 显示数量  
      7.     private static final String BING_IMAGE_SEARCH_URL = "http://www.bing.com/images/async?async=content&q=%s&first=%d&count=%d";  
      8.     private static final int PAGE_SIZE = 35;  
      9.     private static final String IMAGE_URL_REG = "imgurl:&quot;(https?://[^,]+)&quot;";  
      10.     private static final Pattern IMAGE_PATTERN = Pattern.compile(IMAGE_URL_REG);  
      11.       
      12.     @Override  
      13.     public String getSearchUrl(String keyword, int page) {  
      14.         int begin = page * PAGE_SIZE;  
      15.         return String.format(BING_IMAGE_SEARCH_URL, keyword, begin, PAGE_SIZE);  
      16.     }  
      17.   
      18.     @Override  
      19.     public int parseImageUrl(ConcurrentLinkedQueue<String> queue, StringBuffer data) {  
      20.         int count = 0;  
      21.         Matcher matcher = IMAGE_PATTERN.matcher(data);  
      22.         while (matcher.find()) {  
      23.             queue.offer(matcher.group(1));  
      24.             count++;  
      25.         }  
      26.         return count;  
      27.     }  
      28.   
      29. }  
  • 相关阅读:
    1300 · 巴什博弈
    1 · A + B 问题
    37 · 反转一个3位整数
    145 · 大小写转换
    Spring-Boot整合freemarker引入静态资源css、js等
    Monkey API学习与脚本编写小记
    Mac终端快速启动uiautomatorviewer
    Mac解决使用uiautomatorviewer会报错:./uiautomatorviewer 03:56:07 E/Screenshot: Unsupported protocol: 2
    charles抓包https乱码问题解决-转载
    mac解决adb devices命令找不到真机设备
  • 原文地址:https://www.cnblogs.com/tutu21ybz/p/6738760.html
Copyright © 2011-2022 走看看