爬堆糖图片

突然想找点头像 但是又懒得一张张下载 所以搞了个简单的程序帮我下载图片


我先随便搜了个关键字看看是什么样的


然后发现原来是滑动来拿到图片的
那肯定是有js来控制的了

果然没错 会返回一个json数据

而我们要的图片地址就在这path里 那只要拿到path就行了

然后再看看请求的链接是什么

请求这个链接以后就能拿到json数据了

当不断滑动的时候 都会请求新的链接

而在这些链接中大部分都不变 只有几个关键的会改变:kw和start
这里的kw是你搜索的关键字
start是从第几个开始返回 这里默认是返回24个 所以当你start为0的时候 会给你0-23的24张图片 为24的时候会给你24-47的24张图片
所以请求链接的时候只要改这两个参数就ok了


之后也可以加上User-Agent和Referer 不过堆糖好像压根没管这个


然后就是正常的请求地址就行

 public static InputStream connection(String path) throws IOException {URL url = new URL(path);HttpURLConnection httpURLConnection =(HttpURLConnection) url.openConnection();if(httpURLConnection.getResponseCode() != 200) {System.err.println("网址无法连接");System.exit(0);}InputStream inputStream = httpURLConnection.getInputStream();return inputStream;}

这样就拿到输入流了 然后我们还要储存返回来的json数据

 public static void htmlStringSave (StringBuffer stringBuffer,InputStream inputStream) throws IOException {BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(inputStream));String lineStr;while ((lineStr = bufferedReader.readLine()) != null) {stringBuffer.append(lineStr);}}

这样也能储存json数据了

然后我们再调用,网址就是上面给的

 public static void main(String[] args) throws Exception {StringBuffer htmlStr = new StringBuffer();String imagePath ="https://www.duitang.com/napi/blog/list/by_search/?kw=%E9%AB%98%E6%9C%A8&type=feed&include_fields=top_comments%2Cis_root%2Csource_link%2Citem%2Cbuyable%2Croot_id%2Cstatus%2Clike_count%2Clike_id%2Csender%2Calbum%2Creply_count%2Cfavorite_blog_id&_type=&start=24&_=1594026922715";InputStream imagePathInputStream = connection(imagePath);//每次调用前先清空一下htmlStrhtmlStr.setLength(0);htmlStringSave(htmlStr,imagePathInputStream);System.out.println(htmlStr);}

这里我还没有修改kw和start

我们也拿到json数据了

然后再看看这个返回的json数据是什么格式

一个JSONObject包含了两条数据,data里面包含了五条数据,我们要的数据在object_list,是一个数组。

而object_list里面又包含了许多数据 我们需要的数据在photo里面


然后我们就可以开始取数据了
在取之前 还需要下载一下阿里的fastjson
https://github.com/alibaba/fastjson
我们需要用JSONObject类和JSONArray类来拿数据
扩展包的引入就不说明了

 public static String[] getdownloadPath(String jsonStr){//第一个JSONObject 拿到data数据了JSONObject jsonFirst = JSON.parseObject(jsonStr);//获取JSONObject里的data数据JSONObject jsonData = jsonFirst.getJSONObject("data");//获取jsonData里的object_list数组数据 这里用JSONArrayJSONArray jsonList = jsonData.getJSONArray("object_list");//等会返回回去的字符串组String[] s = new String[jsonList.size()];for(int i=0;i<jsonList.size();i++){//得到每条数据的photo值 里面有我们需要的pathJSONObject jsonPhoto = jsonList.getJSONObject(i).getJSONObject("photo");s[i] = jsonPhoto.getString("path");}return s;}

然后我们再调用

String[] ss = getdownloadPath(htmlStr.toString());
for(String s : ss){System.out.println(s);
}

最后的结果

我们已经拿到图片的链接地址了
之后只要把图片下载下来就行了

然后就是要更改kw和start了
kw是要字符串url编码转换的

 public static void main(String[] args) throws Exception {StringBuffer htmlStr = new StringBuffer();String imageName = "高木";int page = 3;//把imageName转码成url编码String utf_8_imageName = URLEncoder.encode(imageName,"utf-8");//总共翻page次页 每翻一次就更改一下start 然后重新请求链接for(int i=0;i<page;i++){String imagePath ="https://www.duitang.com/napi/blog/list/by_search/?kw=" +utf_8_imageName +"&type=feed&include_fields=top_comments%2Cis_root%2Csource_link%2Citem%2Cbuyable%2Croot_id%2Cstatus%2Clike_count%2Clike_id%2Csender%2Calbum%2Creply_count%2Cfavorite_blog_id&_type=&start=" +(i * 24) +"&_=1594026922715";InputStream imagePathInputStream = connection(imagePath);//每次调用前先清空一下htmlStrhtmlStr.setLength(0);htmlStringSave(htmlStr,imagePathInputStream);String[] ss = getdownloadPath(htmlStr.toString());for(String s : ss){//这个方法我没写 就是下载图片就行了downloadImage(s,"D:\\Images\\",imageName);}}}

然后就咻咻咻的下载完了


Java爬堆糖图片爬虫相关推荐

  1. 【用Java爬取网页图片——爬虫爬取数据】

    用Java爬取网页图片--爬虫爬取数据 1.在创建项目中导入jsoup 2.创建一个保存下载图片的路径 3.使用URL读取网页路径,jsoup读取网页内容 4.利用属性标签获取图片连接块 5.因为该路 ...

  2. Java 爬取网页图片并下载

    Java 爬取网页图片并下载 源码; package a; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup. ...

  3. java爬取单张图片

    我们经常需要在网页上获取一些图片,有的图片我们是可以直接下载使用,有的图片需要我们登陆账号甚至付费下载,所以在此我写了一个使用Java爬取任意网页单张图片的爬虫. 代码解析 1.图片的网络位置 2.进 ...

  4. 用 Java 爬小姐姐图片,这个厉害了。。。

    今日推荐 Web登录很简单?开玩笑!知乎热问:国家何时整治程序员的高薪现象?太可怕了!注解+反射优雅的实现Excel导入导出(通用版)Fluent Mybatis 牛逼!Nginx 常用配置清单这玩意 ...

  5. selenium爬堆糖网壁纸

    身为二刺螈真的一看到动漫手绘美图就想保存下来啊,堆糖上有很多好看的插画,试着用selenium爬了一下,并保存到本地. # coding--utf8 import selenium import ti ...

  6. java 爬取百度云盘,python爬虫爬取百度网盘-怎么做一个百度网盘搜索引擎

    因为要做去转盘网,所以一定要爬取网盘资源,本来想自己写一个爬虫挺不容易的,不想分享出来,但最后还是决定了拿给大家一起看吧,毕竟有交流才有进步,有兴趣的朋友也可以看看我写的其他日志或者关注我,会发现去转 ...

  7. Java爬取百度图片人脸识别下载高颜值小姐姐图片

    前言: 最近想下载一些比较好看的妹子图片,但又不想去网上一张张的看,于是就想通过爬取图片进行人脸识别下载. 1.首先:在爬取图片时,通过Java请求时会遇到百度安全认证机制,在这里可以模拟浏览器的请求 ...

  8. Java爬取 百度图片Google图片Bing图片

    先看看抓取的结果. [b]抓关键字"美女"的百度图片:[/b] [img]http://dl2.iteye.com/upload/attachment/0119/1205/e97b ...

  9. java爬取验证码图片_JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取)...

    JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取) 发布时间:2018-05-18 16:41, 浏览次数:632 , 标签: JAVA HttpClien ...

  10. python基础进阶之堆糖头像爬虫

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 想要学习Python?有问题得不到第一时间解决?来看看这里,满足你的需求,资料都已 ...

最新文章

  1. 为什么说BCH是最安全的数字货币之一?
  2. python数据结构的应用场景不包括,Python 数据结构学习
  3. rhcs集群套件—红帽6的高可用
  4. 计算机小键盘价格,带小键盘的笔记本电脑是多少寸
  5. 【jQuery笔记Part1】12-jQuery元素的角标
  6. 用于创建此对象的程序是excel_一起学Excel专业开发22:使用类模块创建对象1
  7. 遗传算法之:地图着色
  8. Delphi XE DataSnap三层开发实务
  9. 【预测模型】基于麻雀算法改进ELMAN神经网络实现数据预测 matlab代码
  10. Amazon Alexa Smart Home Skill 增加订阅事件
  11. Hive中4个By Sort By 、Order By、Distrbute By、 Cluster By区别
  12. oracle xla相关,【EBS】XLA_GLT表的清理
  13. 金融安全:谁忽略了移动应用加密?
  14. 有语音的计算机玩法,哈哈!刚出来的新玩法:喊一嗓子就能让电脑关机
  15. 基于STM32的智能行车辅助系统(自动大灯,倒车报警,自动雨刷,温湿度传感器,TFT 1.3寸LCD屏幕显示,ESP8266WIFI)
  16. 使用无监督算法检测DGA域名(一)
  17. utils:常见的几种日期格式和转换方法
  18. 阿里巴巴矢量库icon font的使用
  19. GIEC2021第八届全球互联网经济大会9月在京举办
  20. 通信工程师2019年报考时间早知道

热门文章

  1. 网站优化:测试网站速度的8款免费工具推荐
  2. root工具android10,KingRoot安卓10root工具 5.4.0最新版
  3. 陈耀烨九段加冕新名人见证实录
  4. centos7该如何限制IP访问?
  5. 计算机程序设计能力考试 PAT 简介(浙大)
  6. 「mt4软件」均线指标的应用方法
  7. 为什么街头篮球总提示服务器维护,我玩街头篮球,但这几天它总是说连接不上服务器怎么回事?...
  8. 你的计算机没有安装cad2006,win7安装autocad2006无法正常的2种解决方法
  9. 《爱的五种能力》读书笔记
  10. 2021湖北省技能高考成绩查询,刚刚!湖北高考查分及志愿填报时间公布!