Java爬取 百度图片Google图片Bing图片
先看看抓取的结果。
[b]抓关键字“美女”的百度图片:[/b]
[img]http://dl2.iteye.com/upload/attachment/0119/1205/e97b889b-d098-3e5b-9055-8f9809fc7732.png[/img]
[b]抓关键字“美女”的Google图片:[/b]
[img]http://dl2.iteye.com/upload/attachment/0119/1211/9f038ce3-9d8b-3d62-a2d4-18b5c0925d37.png[/img]
[b]抓关键字“美女”的Bing图片:[/b]
[img]http://dl2.iteye.com/upload/attachment/0119/1723/16807902-3fa1-380f-9438-cfc27c0764e0.png[/img]
8个Java类:
[list]
[*]Startup.java - main函数
[*]ImageCrawler.java - Crawler基类
[*]BaiduImageCrawler.java - 百度图片的具体爬取实现
[*]GoogleImageCrawler.java - Google图片的具体爬取实现
[*]BingImageCrawler.java - Bing图片的具体爬取实现
[*]ImageWorker.java - 定时从Queue中取图片URL下载(默认开启100个)
[*]ImageDownloader.java - 图片下载
[*]MD5Checksum.java - 文件MD5计算(文件去重)
[/list]
以下是三个搜索引擎的具体抓取实现。完整的代码:[url=http://dl.iteye.com/topics/download/a585d30c-ff73-3a61-a8f6-c26d9700a238]点击下载[/url]
public class BaiduImageCrawler extends ImageCrawler {
//tn:resultjsonavatarnew //ie:utf-8 字符编码(ie输入 oe输出) //word:美女 搜索关键字 //pn:60 开始条数 //rn:30 显示数量 //z:0 尺寸(0全部尺寸 9特大 3大 2中 1小) //width:1024 自定义尺寸-宽 //height:768 自定义尺寸-高 //ic:0 颜色(0全部颜色 1红色 2黄色 4绿色 8青色 16蓝色 32紫色 64粉色 128棕色 256橙色 512黑色 1024白色 2048黑白) //s:0 3头像图片 //face:0 1面部特写 //st:-1 -1全部类型 1卡通画 2简笔画 //lm:-1 (6动态图片 7静态图片) //gsm:3c pn值的十六进制数 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"; private static final int PAGE_SIZE = 60; private static final String IMAGE_URL_REG = "\"objURL\":\"(https?://[^\"]+)\""; private static final Pattern IMAGE_PATTERN = Pattern.compile(IMAGE_URL_REG);
@Override public String getSearchUrl(String keyword, int page) { int begin = page * PAGE_SIZE; return String.format(BAIDU_IMAGE_SEARCH_URL, keyword, begin, PAGE_SIZE, Integer.toHexString(begin)); }
@Override public int parseImageUrl(ConcurrentLinkedQueue<String> queue, StringBuffer data) { int count = 0; Matcher matcher = IMAGE_PATTERN.matcher(data); while (matcher.find()) { queue.offer(matcher.group(1)); count++; } return count; }
}
public class GoogleImageCrawler extends ImageCrawler {
//tbm=isch //q=美女 搜索关键字 //ijn=0 页码(***Google只提供到0到8页数据!) //start=0 开始条数 //tbs=isz:l 搜索条件 // 尺寸 // tbs=isz:l 大 // tbs=isz:m 中 // 颜色 // tbs=ic:color 彩色 // tbs=ic:gray 黑白 // tbs=ic:trans 透明 // 类型 // tbs=itp:face 脸部特写 // tbs=itp:photo 照片 // tbs=itp:clipart 剪贴画 // tbs=itp:lineart 素描画 // tbs=itp:animated 动画 // 条件组合 // tbs=isz:l,ic:color,itp:face private static final String GOOGLE_IMAGE_SEARCH_URL = "https://www.google.com/search?tbm=isch&q=%s&ijn=%d&start=%d&tbs=isz:l"; private static final int PAGE_SIZE = 100; private static final String IMAGE_URL_REG = "\"ou\":\"(https?://[^\"]+)\""; private static final Pattern IMAGE_PATTERN = Pattern.compile(IMAGE_URL_REG);
@Override public String getSearchUrl(String keyword, int page) { int begin = page * PAGE_SIZE; return String.format(GOOGLE_IMAGE_SEARCH_URL, keyword, page, begin); }
@Override public int parseImageUrl(ConcurrentLinkedQueue<String> queue, StringBuffer data) { int count = 0; Matcher matcher = IMAGE_PATTERN.matcher(data); while (matcher.find()) { queue.offer(matcher.group(1)); count++; } return count; }}
public class BingImageCrawler extends ImageCrawler {
//async=content //q=美女 搜索关键字 //first=118 开始条数 //count=35 显示数量 private static final String BING_IMAGE_SEARCH_URL = "http://www.bing.com/images/async?async=content&q=%s&first=%d&count=%d"; private static final int PAGE_SIZE = 35; private static final String IMAGE_URL_REG = "imgurl:"(https?://[^,]+)""; private static final Pattern IMAGE_PATTERN = Pattern.compile(IMAGE_URL_REG);
@Override public String getSearchUrl(String keyword, int page) { int begin = page * PAGE_SIZE; return String.format(BING_IMAGE_SEARCH_URL, keyword, begin, PAGE_SIZE); }
@Override public int parseImageUrl(ConcurrentLinkedQueue<String> queue, StringBuffer data) { int count = 0; Matcher matcher = IMAGE_PATTERN.matcher(data); while (matcher.find()) { queue.offer(matcher.group(1)); count++; } return count; }
}
抓取过程的log:
[img]http://dl2.iteye.com/upload/attachment/0119/1232/2ad3263c-5dce-3d1e-ae39-8d7c12fdad9e.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0119/1234/88ecd1a4-bf7a-396a-b464-29cb2a3e201d.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0119/1725/6342a50c-893a-3418-b92e-686b2a87e910.png[/img]
Java爬取 百度图片Google图片Bing图片相关推荐
- java爬虫黑马百度云,Java爬虫小Demo java爬取百度风云榜数据
Java爬虫小Demo java爬取百度风云榜数据 很简单的一个小例子,使用到了java的爬虫框架 jsoup ,一起啦看看实现的方法吧! 相关推荐:Python爬虫实战 python爬虫爬取百度风云 ...
- [JAVA]爬取百度关于关键字的诗句
[JAVA]爬取百度关于关键字的诗句 寒假不想写作业,学完java基础的我手痒痒,于是就有了这篇菜逼吧初作 仅供学习和交流,严禁用于商业用途 先要获得有哪些关键字可以爬,在此之前,写一个Get函数,来 ...
- Java爬取百度图片人脸识别下载高颜值小姐姐图片
前言: 最近想下载一些比较好看的妹子图片,但又不想去网上一张张的看,于是就想通过爬取图片进行人脸识别下载. 1.首先:在爬取图片时,通过Java请求时会遇到百度安全认证机制,在这里可以模拟浏览器的请求 ...
- Java爬取王者荣耀全英雄全皮肤图片
编码前准备: 导入maven依赖: <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --><dependency> ...
- 百度贴吧界面html程序代码,python爬虫例题:爬取百度贴吧评论区图片和视频
百度贴吧是全球最大的中文交流平台,你是否跟我一样,有时候看到评论区的图片想下载呢?或者看到一段视频想进行下载呢? 今天,本期Python教程带大家通过搜索关键字来获取评论区的图片和视频. [二.项目目 ...
- java爬取百度贴吧所有用户头像
第一次写爬虫,觉得蛮有意思的 写了个爬取贴吧用户头像的工具类 如有问题,多多指教~ 爬虫工具类 package com.yq.spider;import java.io.BufferedInputSt ...
- java爬取百度贴吧吧内所有帖子数据(图文详解)
因为个人需要爬取某个吧内的所有帖子并保存下来,但是无奈不会写python,于是就想到了利用java的jsoup去做爬虫,尝试了多次后终于获取成功,主要遇到的问题还是百度的反爬机制,解决了后,整理一篇文 ...
- 转载:爬取百度图库中猫的图片
文章目录 综合 步进版 转载 仅作为记录,代码均可运行 综合 运行后,输入想爬取的页数: 输入1--爬取30张 输入2--爬取60张 输入3--爬取90张 import requests from l ...
- python贴吧爬虫-Python 爬虫练习: 爬取百度贴吧中的图片
背景:最近开始看一些Python爬虫相关的知识,就在网上找了一些简单已与练习的一些爬虫脚本 实现功能:1,读取用户想要爬取的贴吧 2,读取用户先要爬取某个贴吧的页数范围 3,爬取每个贴吧中用户输入的页 ...
最新文章
- Linux下安装搜狗拼音
- BZOJ3262: 陌上花开(cdq分治)
- C++之map插入数据相同的key不能覆盖value解决办法
- python如何实现人工智能应用锁_如何清除应用锁的数据库
- 技术动态 | 事理图谱,下一代知识图谱
- Spring2..5整合Ehacahe
- 树言树语:AIR的 应用方向在哪里?
- 十年测开如何理解自动化测试里的数据驱动、关键字驱动思路
- arcgis for android 无法加载本地jpg影像解决办法
- 用python直接调用asr技术_python中asr
- 为什么使用 adapter模式
- android 图片 写入文件格式,android实现将位置信息写入JPEG图片文件
- arthas:jvm调优神器
- drools规则引擎使用文档
- android 5.0 开启网卡 权限请求,Aurora Droid | F-Droid - Free and Open Source Android App Repository...
- Illustrator CC 2019for Mac完美直装版无需破解
- MYSQL数据库高级SQL语句详解
- java实现token 过期,java – SQS ExpiredToken:请求中包含的安全令牌是过期状态码:403...
- OCI(Ocean Cycle) 海洋循环回收认证是什么?
- 华为云图像标签使用之智慧相册