加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

浅析requests库响应对象的text和content属性

发布时间:2020-12-16 23:58:28 所属栏目:Python 来源:网络整理
导读:在做爬虫时请求网页的requests库是必不可少的,我们常常会用到 res = resquests.get(url) 方法,在获取网页的html代码时常常使用res的text属性: html = res.text,在下载图片或文件时常常使用res的content属性: with open(filename, fp.write(res.content)

在做爬虫时请求网页的requests库是必不可少的,我们常常会用到 res = resquests.get(url) 方法,在获取网页的html代码时常常使用res的text属性: html = res.text,在下载图片或文件时常常使用res的content属性:

with open(filename,  fp.write(res.content)

下面我们来看看 'text' 和 'content' 的不同之处:

输出本博客的响应对象的 text

url = <span style="color: #800000">'<span style="color: #800000">https://www.cnblogs.com/huwt/<span style="color: #800000">'<span style="color: #000000">

res = requests.get(url,timeout = 6<span style="color: #000000">)

<span style="color: #0000ff">print(res.text)

?(只截取到标签)</p> <p><p class="pic_center"><img src="http://img50.lidatong.com.cn//uploads/allimg/c20201216/cbc3ecf4e18e5716e2ab21ccab6e69d5.gif" alt=""></p></p> <p>输出本博客的响应对象的 content</p> <div class="cnblogs_code"> <pre><span style="color: #0000ff">import</span><span style="color: #000000"> requests <p>url </span>= <span style="color: #800000">'</span><span style="color: #800000">https://www.cnblogs.com/huwt/</span><span style="color: #800000">'</span><span style="color: #000000"></p> <p>res </span>= requests.get(url,timeout = 6<span style="color: #000000">)</p> <p></span><span style="color: #0000ff">print</span>(res.content)</pre></p> </div> <p>?(只截取到<title>标签)</p> <p>?<p class="pic_center"><img src="http://img50.lidatong.com.cn//uploads/allimg/c20201216/67cfaf825bb31b55f1b5c4e74e9b10a3.gif" alt=""></p></p> <p>通过<title>标签我们可以看出 res.text 直接输出了汉字,而 res.content 好像是以十六进制的形式来表示汉字</p> <p>为了让进一步了解text 和 content 我们来看看它们的类型:</p> <div class="cnblogs_code"> <pre><span style="color: #0000ff">import</span><span style="color: #000000"> requests <p>url </span>= <span style="color: #800000">'</span><span style="color: #800000">https://www.cnblogs.com/huwt/</span><span style="color: #800000">'</span><span style="color: #000000"></p> <p>res </span>= requests.get(url,timeout = 6<span style="color: #000000">)</p> <p></span><span style="color: #0000ff">print</span><span style="color: #000000">(type(res.text))</p> <p></span><span style="color: #0000ff">print</span>(type(res.content))</pre></p> </div> <p>?<p class="pic_center"><img src="http://img50.lidatong.com.cn//uploads/allimg/c20201216/4ca0da97427b5e468ead90b052372aa0.gif" alt=""></p></p> <p>我们可以看到res.text是字符串类型,而res.content是二进制类型</p> <p>为了进一步验证我们使用bytes类型的decode()方法对content进行‘utf-8’编码再显示</p> <p><div class="cnblogs_code"></p> <pre><span style="color: #0000ff">import</span><span style="color: #000000"> requests <p>url </span>= <span style="color: #800000">'</span><span style="color: #800000">https://www.cnblogs.com/huwt/</span><span style="color: #800000">'</span><span style="color: #000000"></p> <p>res </span>= requests.get(url,timeout = 6<span style="color: #000000">)</p> <p></span><span style="color: #0000ff">print</span>(res.content.decode(<span style="color: #800000">'</span><span style="color: #800000">utf-8</span><span style="color: #800000">'</span>))</pre></p> </div> <p><p class="pic_center"><img src="http://img50.lidatong.com.cn//uploads/allimg/c20201216/b3a0ca30e283cc26c6066ed973356ca7.gif" alt=""></p></p> <p>发现和res.text显示的内容完全一样</p> <p>因此我们可以得出结论:</p> <div class="cnblogs_code"> <pre><span style="color: #000000">resp.text返回的是Unicode型的数据。 <p>resp.content返回的是bytes型也就是二进制的数据。、</p> <p>获取文本一般使用res.text,获取图片或文件一般使用res.conten</span></pre></p> </div> <p>再做几点补充:</p> <div class="cnblogs_code"> <pre><span style="color: #000000">text是content经过编码之后的字符串,那编码方式是什么呢? <p>在返回text时requests会基于 HTTP 头部对响应的编码作出有根据的推测,但不一定准确,有可能出现乱码,</p> <p>而我们可以手动指定一种编码方式:res.encoding </span>= <span style="color: #800000">'</span><span style="color: #800000">需要的编码方式</span><span style="color: #800000">'</span><span style="color: #000000"></p> <p>或让requests根据body进行猜测:res.encoding </span>= res.apparent_encoding</pre></p> </div> <p>参考学习:</p> <p>https://zhidao.baidu.com/question/941417472703558372.html</p> <p>https://www.cnblogs.com/loveyouyou616/p/8135678.html</p> <p>https://www.cnblogs.com/chownjy/p/6625299.html</p> <p>https://www.jianshu.com/p/0e0336b370f3</p> <p style="text-align:right;">(编辑:李大同)</p> <p style="text-align:right;">【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!</p> </td> </tr> </table> </div> <div class="dede_pagess"><ul class="pagelist"></ul></div> <div class="ad-690"><script src='https://ess.0577qiche.com/d/js/acmsd/ad76.js' language='javascript'></script></div> <div class="g-box10"> <div class="t-2">相关内容</div> <ul class="b-box12"></ul> <ul class="b-box13"><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201217/557310.html" target="_blank">Python使用numpy实现BP神经网络</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201220/591485.html" target="_blank">Python:找到一种计算多边形“内部质心”(X,Y)的方法</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201220/590188.html" target="_blank">关于Python虚拟环境与包管理你应该知道的事</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201216/502541.html" target="_blank">用Python的Flask框架结合MySQL写一个内存监控程序</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201220/596681.html" target="_blank">python – 使用Django提供许多动态生成的图像</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201216/512287.html" target="_blank">如何持久运行Python脚本?</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201220/596192.html" target="_blank">django – HTTP2与gunicorn</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201217/577083.html" target="_blank">Python获取上一个月最后一天的日期</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201220/588357.html" target="_blank">python3-cookbook笔记:第十二章 并发编程</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201220/594873.html" target="_blank">python itertools 模块讲解</a></li><div class="cl"></div></ul> </div> </div> </div> <div class="right-1 fr"> <div class="g-box8"> <div class="t-2">推荐文章</div> <ul></ul> </div> <div class="g-box11"> <div class="t-2">站长推荐</div> <ul class="b-box7"><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201217/561431.html" target="_blank">分享一个简单的python读写文件脚本</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201217/556862.html" target="_blank">Python字符串逐字符或逐词反转方法</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201216/516729.html" target="_blank">python统计日志ip访问数的方法</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201217/577894.html" target="_blank">丢失列时将权重更改为我的索引</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201216/503029.html" target="_blank">python基于urllib实现按照百度音乐分类下载mp3的</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201216/526577.html" target="_blank">python – 如何测试django数据库模式?</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201217/534374.html" target="_blank">python – 当任务结果很大时,我应该如何使用Cel</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201217/578573.html" target="_blank">python基于FTP实现文件传输相关功能代码实例</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201216/508969.html" target="_blank">python3下使用cv2.imwrite存储带有中文路径图片的</a></li><li><a href="https://www.lidatong.com.cn/html/kaifa/Python/20201216/503626.html" target="_blank">python多线程编程中的join函数使用心得</a></li></ul> </div> <script type="text/javascript">jQuery(".g-box8").slide({ titCell:"li",triggerTime:0 }); </script> <div class="ad-250"><script src='https://ess.0577qiche.com/d/js/acmsd/ad103.js' language='javascript'></script></div> <div class="g-box3 u-3"> <div class="t-1">热点阅读</div> <ul class="b-box2"></ul> </div> <div class="ad-250"><script src='https://ess.0577qiche.com/d/js/acmsd/ad77.js' language='javascript'></script></div> </div> <div class="cl"></div> </div> <div class="ad-960"><script src='https://ess.0577qiche.com/d/js/acmsd/ad78.js' language='javascript'></script></div> <div class="footer"> <p>【免责声明】本站内容转载自互联网,其发布内容言论不代表本站观点,如果其链接、内容的侵犯您的权益,烦请提交相关链接至邮箱bqsm@foxmail.com我们将及时予以处理。</p> <p>建议您使用1920×1080分辨率、谷歌浏览器Google Chrome、Microsoft Edge以获得本站的最佳浏览效果</p> <p>Copygight © 2008-2022 https://www.lidatong.com.cn/ All Rights Reserved. 李大同</p> <p><script type="text/javascript" src="//js.users.51.la/21280179.js"></script></p> </div> </body> </html>