先预告一下,源码会在这几天补全_(:зゝ∠)_

前面提及过断点传输,,若使用普通的方法去读取流的话,是一定会有错误的_(:зゝ∠)_

测试网址:

https://image.baidu.com/n/similar?queryImageUrl=http%3A%2F%2Fe.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F10dfa9ec8a1363272e2522b89b8fa0ec09fac775.jpg&querySign=2286841505,3800276236&word=&querytype=0&t=1501061892165&rn=60&sort=&fr=pc&pn=23

测试代码:

    HttpGet get=new HttpGet(你们想要测试的网址);InputStream is=downLoad.client.execute(get).getEntity().getContent();byte b[]=new byte[2048];String str="";while (is.read(b)!=-1) {str+=new String(b,"UTF-8");}for (String c : regExp.matcherList(str, "\"objURL\":\".+?\\\"")) {System.out.println(c);}

有图有真相

十分令人懵逼的错误_(:зゝ∠)_,若没有进行错误处理的话,一定会在处理错误的方面花费大量时间......得不偿失_(:зゝ∠)_

如何判断是否有断点传输?

万能的F12

响应头中的Accept-Encoding中就声明了gzip,这是一个类似于压缩包的东西,因为不知道要加载多少数量的图片,所以将他们压缩起来减少服务器内存压力是一种常见的做法_(:зゝ∠)_

不推荐在请求头中设置Accept-Encoding,因为没有多少效果,_(:зゝ∠)_,而且说不定还不给你数据了

好了,开始上源码

package EII;import java.io.IOException;import java.io.InputStream;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;public class downLoad {public static CloseableHttpClient client=HttpClients.createDefault();public static String download(String url) throws ClientProtocolException, IOException{HttpGet get=new HttpGet(url);InputStream is=client.execute(get).getEntity().getContent();String text="";while (true) {int r=is.read();int length=is.available()+1;if(r==-1)break;if(length==0)continue;byte[] b=new byte[length];b[0]=(byte) r;is.read(b, 1, length-1);text+=new String(b);}is.close();return text;}public static String download(InputStream is) throws IOException{String text="";while (true) {int r=is.read();int length=is.available()+1;if(r==-1)break;if(length==0)continue;byte[] b=new byte[length];b[0]=(byte) r;is.read(b, 1, length-1);text+=new String(b,"UTF-8");}is.close();return text;}
}

原理是InputStream读取一个字符串之后得到当前长度,因为断点传输并不是将全部的数据马上放进去,而是一次放部分数据进去,

只要读取到的数据并不是-1的话,available是会返回长度的,或许画个图更清晰

因为read会读取一个字符,所以循环读取并不是从0开始,而是从1开始到结束

Java实现抓取百度识图结果的实现和思路-3-实现断点传输相关推荐

  1. Java实现抓取百度识图结果的实现和思路-2-Json的处理

    上一篇文章的断点传输以后再讲_(:зゝ∠)_,先讲讲json的处理 什么是json???举个例子 似乎短了点,如果用昨天的postURL案例得到的网址去访问的话,也可能会得到类似的结果,不过真实情况是 ...

  2. java用gson转换百度识图api的json

    参考文章1 [转]用GSON 五招之内搞定任何JSON数组 参考文章2 JAVA使用Gson解析json数据,实例 百度识图api返回的值如下 result:{"log_id": ...

  3. java jsoup抓取百度图片保存到本地,并压缩到指定大小(可指定宽高或者流大小)

    代码如下: package cn.xyz.commons.utils; import java.awt.image.BufferedImage; import java.io.ByteArrayInp ...

  4. java抓取百度搜索结果_java实现抓取百度对某站点搜索结果

    htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容.项目可以模拟浏览器运行,被誉为java浏览器的开源实现.这个没有界面的浏览器,运行速度 ...

  5. python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...

    原标题:使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号 不知道大家过年都是怎么过的,反正栏主是在家睡了一天,醒来的时候登QQ发现有人找我要一份贴吧爬虫的源代码,想起之前练手的时候写过一个抓 ...

  6. python语言翻译-教你用Python抓取百度翻译

    最近一直在一个平台学习Python,所以分享下课程里面抓取百度翻译的操作.原理其实也很简单,就是将浏览器请求的操作我们用python进行模拟,从而获取到返回的数据,我们将返回的数据进行提取,从而得到我 ...

  7. 教你用Python抓取百度翻译

    最近一直在一个平台学习Python,所以分享下课程里面抓取百度翻译的操作.原理其实也很简单,就是将浏览器请求的操作我们用python进行模拟,从而获取到返回的数据,我们将返回的数据进行提取,从而得到我 ...

  8. 测试爬虫 爬取百度贴吧 爬取百度搜图图片

    测试爬取百度贴吧图片 定义爬取百度斗图吧首页的每条贴子的URL的爬取规则对象 /*** 斗图吧贴子的url*/SpiderFunction<Set<String>> doutu ...

  9. iOS—网络实用技术OC篇网络爬虫-使用java语言抓取网络数据

    网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...

  10. python百度贴吧怎么爬取最早的帖子_【Python爬虫教学】百度篇·手把手教你抓取百度贴吧任意贴吧指定范围页数内的源代码...

    开门见山. 懒癌一犯,能拖一天是一天. 好了,亲爱的小伙伴们,我又回来了!今天带来的是抓取输入的任意贴吧,抓取指定范围页数内的源代码. 工具: 依旧是 PyCharm 和 Google 浏览器,pyt ...

最新文章

  1. 王孟源:中国要崛起,基础科研需要“讲实话
  2. c java http_[C] 类似于HttpClient的C语言实现Http POST功能如何实现?
  3. linux 远程执行shell 获取返回值
  4. openstack 网络
  5. android读取excel文件_python里读写excel等数据文件的几种常用方式
  6. Python核心团队计划2020年停止支持Python2,NumPy宣布停止支持计划表
  7. [译] Node.js, Express.js 搭建 HTTP/2 服务器
  8. 矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵
  9. c java socket编程_java+swing C/s模式的socket编程与长短连接
  10. 静态路由实现路由过滤
  11. react调试工具Reactdevelopertools
  12. VirtualBox虚拟机,WIN7的性能远远落后于LINUX及解决办法
  13. 阿里云云计算 14 使用阿里云中的OSS
  14. 网络安全渗透实战详细详解
  15. JEECG生成的代码详解
  16. 搭建网站要多少钱?自助建站制作网站要花多少钱?
  17. python中re模块及正则匹配
  18. 网络系统结构与设计的基本原理(二 )
  19. Java 输出四叶玫瑰数
  20. 计算机学 英文,计算机英语学习

热门文章

  1. 非视线成像:基于飞秒摄影技术
  2. C语言信息学一本通题库答案,信息学奥赛一本通(C++版)在线评测系统
  3. Vue+Element ui中常用表单验证----手机号、座机、传真、邮箱、身份证号、数字和带小数点的数字
  4. 翻译: 顶级人工智能会议 CVPR NeurIPS AAAI 等
  5. 已知元器件名,AD原理库快速查找元器件
  6. 字体如何设计,这几点很重要
  7. OverFeat论文解析
  8. VS Code C++ 插件推荐安装
  9. 迅雷开放离线下载试用,每天8000名额,速度来抢!
  10. CentOS系统中常用查看日志命令