Python中request的content,text和string方法的区别
content,text和string方法的区别
- content & text
- text & string
content & text
源码:
@propertydef text(self):"""Content of the response, in unicode.If Response.encoding is None, encoding will be guessed using``chardet``.The encoding of the response content is determined based solely on HTTPheaders, following RFC 2616 to the letter. If you can take advantage ofnon-HTTP knowledge to make a better guess at the encoding, you shouldset ``r.encoding`` appropriately before accessing this property."""#content的完整代码就不贴了。@propertydef content(self):"""Content of the response, in bytes."""
结论:
- request.text():返回的是Unicode型的数据。
request.text():获取爬取的页面内容 - request.content():返回的是bytes型也就是二进制的数据。
request.content():一般用于获取二进制数据,如:爬取图片
# 爬取二进制文件,并将其存入文件中
import requestsheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}# 使用get()将URL传入
URL = 'https://www.baidu.com/img/bd_logo1.png'r = requests.get(URL, headers=headers)
print(r.status_code)# r.content:二进制, 将二进制写入文件中
with open(r'D:\Python\PyWorkSpace\Crawl\baidu.png', 'wb') as fp:fp.write(r.content)
也就是说,如果你想取文本,可以通过r.text。
如果想取图片,文件,则可以通过r.content。(resp.json()返回的是json格式数据)
text & string
爬虫练习中,我发现string与text使用不一样,后来了解到:
- .string可以返回当前节点中的内容,但是当前节点包含子节点时,.string不知道要获取哪一个节点中的内容,返回None
- .text(或者.get_text()) 可以返回当前节点所包含的所有文本内容,包括当前节点的子孙节点
如:在爬取全国天气高温榜时
在我想要获取今天气温时:
- 发现div标签中还有其他标签< em >
- 在使用 div.string时获取的不是全部内容,而只有部分温度值,或者返回None
- 后来参考大佬代码,使用text():获取div里面的所有内容,因此便解决了问题,顺利取出温度值。
# 循环该容器中子标签for item in tag.children:# 判断item是否为bs4的Tag类型(是不是标签)if (isinstance(item, bs4.element.Tag)):# 返回所有div子标签的html文档,一个列表div = item('div')# 获取每一个div标签中的内容list.append([div[0].text, div[1].text, div[2].text, div[3].text])
感谢努力,加油!
站在巨人肩膀上前进
感谢其他大佬
Python中request的content,text和string方法的区别相关推荐
- Python中 redis StrictRedis对象操作string类型
Python中 redis StrictRedis对象操作string类型 准备 在桌面上创建redis目录 使用pycharm打开 redis目录 创建redis_string.py文件 from ...
- 小结两种在Python中导入C语言扩展库的方法
小结两种在Python中导入C语言扩展库的方法 分类: Pythoner2009-08-18 20:44 2563人阅读 评论(1) 收藏 举报 python扩展c语言importstring 一种是 ...
- 解惑(三)----- 深入理解Python中的self参数和__init__(self)方法--通过类比Java语言
一.前言 在这里我想通过用Python和Java语言的类比来对Python中的self参数和__init__(self)方法做一个深入的解释.这样可以加深对self参数和__init__(self)方 ...
- python的re2和re区别_浅谈Python中re.match()和re.search()的使用及区别
1.re.match()fvk免费资源网 re.match()的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None.fvk免费资源网 包含的参数如下: ...
- Python中多线程thread与threading的实现方法
Python中多线程thread与threading的实现方法 这篇文章主要介绍了Python中多线程thread与threading的实现方法,很重要的应用,需要的朋友可以参考下 学过Python的 ...
- 详解Python中pyautogui库的最全使用方法
这篇文章主要介绍了详解Python中pyautogui库的最全使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值 在使用Python做脚本的话,有两个库可以使用,一个 ...
- Python中pyautogui库的最全使用方法
Python中pyautogui库的最全使用方法 Python中pyautogui库的最全使用方法 常用操作 鼠标操作 键盘操作 弹窗操作 图像操作 参考资料 Python中pyautogui库的最全 ...
- python csv库,Python 中导入csv数据的三种方法
Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...
- python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?
原标题:在Python中执行shell命令的6种方法,你都知道吗? Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...
最新文章
- 『科学计算』可视化二元正态分布3D科学可视化实战
- 序列模式挖掘、频繁项集与频繁序列
- 039_Unicode对照表五
- 最终产品的质量需求是什么?
- fastdfs上传文件时报错No route to host
- 第一个flash游戏--配对游戏
- python 状态机第三方库_Python 状态机 - osc_8g11urw7的个人空间 - OSCHINA - 中文开源技术交流社区...
- 可解释性系列论文:Mathematics of Deep Learning
- SQLServer的本月统计和本周统计
- 05 基本数据类型+五大数据类型
- ZigBee2006 CC2430 按键流程
- 今生梦一场,思念你的殇
- 【复习】Listening and Reading Comprehension
- JVM中的Xms和Xmx
- 只有蓝色www.zcool.com.cn
- 项目销售实用技巧(精华,销售,售前必看)
- C# 网络编程之网页简单下载实现
- 关于两RS485系统共地的问题
- Flask学习笔记(四): Flask与数据库连接
- [转]普通软件项目开发过程规范(五)—— 总结
热门文章
- uefi模式安装windows10和deepin
- linux中选取一行的命令,使用cut选择一行中的部分内容--用Enki学Linux系列(13)
- c++面试常见题·Part 2 数据结构和STL
- 关于Docker,你要知道的都在这了
- 【CSP-S2019模拟】09.24比赛总结
- 经纬度换算数值_Excel中经纬度数据转换公式
- 华硕b365安装服务器系统,华硕B365主板搭载intel8/9代平台安装win7的详细教程
- fatal error: opencv2/opencv_modules.hpp: No such file or directory(linux系统,opencv4)
- Harbor项目高手问答及赠书活动火热进行中
- 打卡赠书的几点重要说明