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字典的方法详解
Aug 31 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
Python验证文件是否可读写代码分享
Dec 11 Python
Python内置函数reversed()用法分析
Mar 20 Python
Python3实现购物车功能
Apr 18 Python
django反向解析和正向解析的方式
Jun 05 Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
通用的Django注册功能模块实现方法
Feb 05 Python
浅谈Python响应式类库RxPy
Jun 14 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
信用卡效验程序
2006/10/09 PHP
php开发文档 会员收费1期
2012/08/14 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
js 深拷贝函数
2008/12/04 Javascript
JS 判断undefined的实现代码
2009/11/26 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
Python urlopen()函数 示例分享
2014/06/12 Python
python2.7安装图文教程
2018/03/13 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
体育教育专业自荐信范文
2013/12/20 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
给全校老师的建议书
2014/03/13 职场文书
腾讯广告词
2014/03/19 职场文书
倡议书怎么写?
2019/04/11 职场文书
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫