【Rollo的Python之路】Python 爬虫系统学习 (二) Requests 模块学习
2020-12-13 02:19
YPE html>
标签:系统 status ati app btn hid x86 www cti
Requests模块学习:
1.0 Requests 初识
Requests 模块是一个第三方的库,首先我们要安装Requests.用pip安装,先看一下pip是哪个python 的版本。
pip --version
然后用pip安装就OK
pip install requests
开始要导入 Requests 模块
import requests
然后我们试一下:
import requests results = requests.get(‘https://www.baidu.com‘)
然后我们看一下得到的源码
results.text ‘\r\nç\x99¾åº¦ä¸\x80ä¸\x8bï¼\x8cä½\xa0å°±ç\x9f¥é\x81\x93 \r\n‘æ\x96°é\x97» hao123 å\x9c°å\x9b¾ è§\x86é¢\x91 è´´å\x90§ æ\x9b´å¤\x9a产å\x93\x81å\x85³äº\x8eç\x99¾åº¦ About Baidu
©2017 Baidu 使ç\x94¨ç\x99¾åº¦å\x89\x8då¿\x85读 æ\x84\x8fè§\x81å\x8f\x8dé¦\x88 京ICPè¯\x81030173å\x8f·
源码里面有一些是乱码,这是因为我们没有使用解码方式,而是requests模式自己认为的解码方式解的。我们看来是
results.encoding
要想到得正确的代码:用utf-8解码就OK
1 results.encoding = ‘utf-8‘ 2 results.text 3 4 5 ‘\r\n百度一下,你就知道 \r\n‘新闻 hao123 地图 视频 贴吧 更多产品关于百度 About Baidu
©2017 Baidu 使用百度前必读 意见反馈 京ICP证030173号
这里要注意:
1.0 results.text 这个地方的text是一个属性,属性调用不用要(),大多数情况是如果是名词的话,那这个名词基本上是属性,不用()
2.0 reuqests.get() 这个地方的get是一个方法,方法调用要用(),大多数情况 是如果 是动词的话,那个动词基本上都是方法,都要用()
3.0 我们自己写程序的时候也要遵守这个原则,这样的话,方便以后维护。
results.text可以得到源码,results.content也可以同样得到源码,我们来试一下:
>>> results.content b‘\r\n\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93 \r\n‘\xe6\x96\xb0\xe9\x97\xbb hao123 \xe5\x9c\xb0\xe5\x9b\xbe \xe8\xa7\x86\xe9\xa2\x91 \xe8\xb4\xb4\xe5\x90\xa7 \xe6\x9b\xb4\xe5\xa4\x9a\xe4\xba\xa7\xe5\x93\x81\xe5\x85\xb3\xe4\xba\x8e\xe7\x99\xbe\xe5\xba\xa6 About Baidu
©2017 Baidu \xe4\xbd\xbf\xe7\x94\xa8\xe7\x99\xbe\xe5\xba\xa6\xe5\x89\x8d\xe5\xbf\x85\xe8\xaf\xbb \xe6\x84\x8f\xe8\xa7\x81\xe5\x8f\x8d\xe9\xa6\x88 \xe4\xba\xacICP\xe8\xaf\x81030173\xe5\x8f\xb7
他得到的是一个byte类型的数据。
然后用 decode转码就得到str类型的数据:decode就是动词,是方法,要(),默认utf-8,
>>> results.content.decode() ‘\r\n百度一下,你就知道 \r\n‘新闻 hao123 地图 视频 贴吧 更多产品关于百度 About Baidu
©2017 Baidu 使用百度前必读 意见反馈 京ICP证030173号
这里要注意:
requests中解决编码与解码的方法:
1.0 首先选择-- response.content.decode() 默认使用utf-8,80%是utf-8
2.0 如果不行--response.content.decode(‘gbk‘),
3.0 还是不行--response.text 因为get方法会自动检测代码的编码方式,虽然成功率很低,但是最后这是最后一击了
4.0 response.text 可以修改编码方式: response.encoding = ‘gbk‘
OK,requests除了get请求还有其他请求:
HTTP POST,(这个用于有cookie与session的网站)
HTTP PUT,
HTTP DELETE,
HTTP HEAD,
>>> r = requests.post(‘http://www.baidu.com‘, data = {‘key‘:‘value‘}) >>> r = requests.put(‘http://www.baidu.com/put‘, data = {‘key‘:‘value‘}) >>> r = requests.delete(‘http://www.baidu.com/delete‘) >>> r = requests.head(‘http://www.baidu.com/get‘) >>> r = requests.options(‘http://www.baidu.com/get‘)
2.0 Requests URL构造方法:
【Rollo的Python之路】Python 爬虫系统学习 (二) Requests 模块学习
标签:系统 status ati app btn hid x86 www cti
原文地址:https://www.cnblogs.com/rollost/p/11031618.html
文章标题:【Rollo的Python之路】Python 爬虫系统学习 (二) Requests 模块学习
文章链接:http://soscw.com/essay/25345.html