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
Zabbix实现微信报警功能
Oct 09 Python
Python实现GUI学生信息管理系统
Apr 05 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
Pandas中Series和DataFrame的索引实现
Jun 27 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 Python
在Tensorflow中查看权重的实现
Jan 24 Python
如何在 Django 模板中输出 &quot;{{&quot;
Jan 24 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
python 读取串口数据的示例
Nov 09 Python
Django celery异步任务实现代码示例
Nov 26 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 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
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
AngularJS的ng-click传参的方法
2017/06/19 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
python插入排序算法的实现代码
2013/11/21 Python
Python基类函数的重载与调用实例分析
2015/01/12 Python
python实现计算倒数的方法
2015/07/11 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
教师应聘个人求职信
2013/12/10 职场文书
球队口号
2014/06/18 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL