Http状态码
状态代码 | 代码描述 | 处理方式 |
200 | 请求成功 | 获得响应的内容,进行处理 |
201 | 请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到 | 爬虫中不会遇到 |
202 | 请求被接受,但处理尚未完成 | 阻塞等待 |
204 | 服务器端已经实现了请求,但是没有返回新的信息。如果客户是用户代理,则无须为此更新自身的文档视图 | 丢弃 |
300 | 该状态码不被HTTP/1.0的应用程序直接使用,只是作为3xx类型回应的默认解释。存在多个可用的被氢气资源 | 若程序中能够处理,则进一步处理。如果程序中不能处理,则丢弃 |
301 | 请求到的资源都会分配一个永久的URL,这样你可以在将来通过该URL来访问此资源 | 重定向到分配的URL |
302 | 请求到的资源在一个不同的URL处临时保存 | 重定向到临时的URL |
304 | 请求的资源未更新 | 丢弃 |
400 | 非法请求 | 丢弃 |
401 | 未授权 | 丢弃 |
403 | 禁止 | 丢弃 |
404 | 没有找到 | 丢弃 |
5xx | 回应代码以“5”开头的状态码表示服务器端发现自己出现错误,不能继续执行请求 | 丢弃 |
该表引用于罗刚著《自己动手写网络爬虫》
通过上一节的学习,了解到执行请求后会得到一个响应对象,响应对象里包含了响应状态码,结合上表通过判断状态码实现进一步操作。
//执行get方法成功,返回状态码200,输出响应对象 int statusCode = response.getStatusLine().getStatusCode(); if(statusCode == HttpStatus.SC_OK){ System.out.println(response); }
响应实体
就是响应的具体文档,如html文件,图片,视频等
//将响应对象以UTF-8标准字符赋值给字符串entity,并输出到控制台
String entity = EntityUtils.toString(response.getEntity(),"UTF-8"); System.out.println(entity);
将其存储到本地
String filename = path.substring(+path.lastIndexOf('/')+1)+".html"; File f = new File(filename); FileOutputStream fop = new FileOutputStream(f); OutputStreamWriter writer = new OutputStreamWriter(fop,"UTF-8"); writer.append(entity); writer.close(); fop.close();