Python爬虫库requests获取响应内容、响应状态码、响应头


Posted in Python onJanuary 25, 2020

首先在程序中引入Requests模块

import requests

一、获取不同类型的响应内容

在发送请求后,服务器会返回一个响应内容,而且requests通常会自动解码响应内容

1.文本响应内容

获取文本类型的响应内容

r = requests.get('https://www.baidu.com')
r.text # 通过文本的形式获取响应内容
'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>ç\x99¾åo|ä¸\x80ä¸\x8bï¼\x8cä½\xa0å°±ç\x9f¥é\x81\x93</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=ç\x99¾åo|ä¸\x80ä¸\x8b class="bg s_btn" autofocus></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>æ\x96°é\x97»</a> <a href=https://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>å\x9c°å\x9b¾</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>è§\x86é¢\x91</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>è′′å\x90§</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>ç\x99»å½\x95</a> </noscript> <script>document.write(\'<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=\'+ encodeURIComponent(window.location.href+ (window.location.search === " rel="external nofollow" " ? "?" : "&")+ "bdorz_come=1")+ \'" name="tj_login" class="lb">ç\x99»å½\x95</a>\');\r\n        </script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">æ\x9b′å¤\x9aäo§å\x93\x81</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>å\x853äo\x8eç\x99¾åo|</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>©2017 Baidu <a href=http://www.baidu.com/duty/>使ç\x94¨ç\x99¾åo|å\x89\x8då¿\x85èˉ»</a>  <a href=http://jianyi.baidu.com/ class=cp-feedback>æ\x84\x8fè§\x81å\x8f\x8dé|\x88</a> äo¬ICPèˉ\x81030173å\x8f·  <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>\r\n'

通过encoding来获取响应内容的编码以及修改编码

r.encoding
'ISO-8859-1'

2.二进制响应内容

r.content # 通过content获取的内容便是二进制类型的

3.JSON响应内容

r.json()

4.原始响应内容

r = requests.get('https://www.baidu.com',stream=True)
print(r.raw) # 就是urllib中的HTTPResponse对象
print(r.raw.read(10))
<requests.packages.urllib3.response.HTTPResponse object at 0x00000077940AEEF0>
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'

二、响应状态码

获取响应状态码

r = requests.get('https://www.baidu.com')
r.status_code
200

判断响应状态码

r.status_code == requests.codes.ok
True

当发送一个错误请求时,抛出异常

bad_r = requests.get('http://httpbin.org/status/404')
print(bad_r.status_code)
bad_r.raise_for_status()
404



---------------------------------------------------------------------------

HTTPError                 Traceback (most recent call last)

<ipython-input-15-9b812f4c5860> in <module>()
   1 bad_r = requests.get('http://httpbin.org/status/404')
   2 print(bad_r.status_code)
----> 3 bad_r.raise_for_status()


D:\Anaconda3\lib\site-packages\requests\models.py in raise_for_status(self)
  926 
  927     if http_error_msg:
--> 928       raise HTTPError(http_error_msg, response=self)
  929 
  930   def close(self):


HTTPError: 404 Client Error: NOT FOUND for url: http://httpbin.org/status/404

三、响应头

获取响应头

r = requests.get('https://www.baidu.com')
r.headers
{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'Keep-Alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Mon, 23 Jul 2018 09:04:12 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:23:51 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}

获取响应头的具体字段

print(r.headers['Server'])
print(r.headers.get('Server'))
bfe/1.0.8.18
bfe/1.0.8.18

更多关于Python爬虫库requestsr的使用方法请查看下面的相关链接

Python 相关文章推荐
python实现指定字符串补全空格的方法
Apr 30 Python
python获取当前时间对应unix时间戳的方法
May 15 Python
Python操作MySQL模拟银行转账
Mar 12 Python
Python中的单继承与多继承实例分析
May 10 Python
Python匿名函数及应用示例
Apr 09 Python
Django Rest framework权限的详细用法
Jul 25 Python
信号生成及DFT的python实现方式
Feb 25 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 Python
python实现计算图形面积
Feb 22 Python
Python中递归以及递归遍历目录详解
Oct 24 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 #Python
flask框架自定义url转换器操作详解
Jan 25 #Python
常用python爬虫库介绍与简要说明
Jan 25 #Python
flask框架url与重定向操作实例详解
Jan 25 #Python
flask框架蓝图和子域名配置详解
Jan 25 #Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 #Python
如何在 Django 模板中输出 &quot;{{&quot;
Jan 24 #Python
You might like
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
PHP安全性漫谈
2012/06/28 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
js 操作符实例代码
2009/10/24 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
浅谈python的dataframe与series的创建方法
2018/11/12 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
露营世界:Camping World
2017/02/02 全球购物
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
圣诞节红领巾广播稿
2014/02/03 职场文书
基层党员对照检查材料
2014/08/25 职场文书
违反交通法规检讨书
2014/09/10 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL