03requests模块

中文文档 API 

1、为什么要学习requests,而不是urllib?

requests的底层实现就是urllib

requests在python2和python3中通用,方法完全一样

requests简单易用

requests能够自动帮助我们解压(gzip压缩的等)网页内容

2、requests的作用:发送网络请求,返回响应数据

3、如何使用requests来发送网络请求?

response = requests.get(url)

response的常用方法:

response.text(获取html str,解码类型默认ISO-8859-1,需要先修改解码方式)

response.content(注意python2与python3环境下的区别)推荐使用这种方式获取网页数据,python3环境下返回的是bytes类型数据,python2返回的是str

response.status_code(打印返回的网页状态码)

response.request.headers(请求头,注意是request而不是requests)

response.headers(响应头)

注意点:

一般情况下,网站不会设置默认编码方式,那么默认编码方式就是"ISO-8859-1"

利用requests.get(url)获取到网页请求的内容用response来接收,打印response是个对象。用response.text方法读取到的内容有乱码,由此可知response.text有自己的解码格式(text方法直接讲对象中字符串以文本形式输出,所以输出结果没有“”,这是与content方法有区别的地方),利用response.encoding属性可知response.text默认解码格式为ISO-8859-1,可修改解码方式,设置属性response.encoding = 'utf-8',然后再打印response.text即可

这样做稍有麻烦,可以直接打印response.content.

在python3环境下response.content是二进制bytes类型需要解码response.content.decode()转换为str数据类型,但在python2环境下不需要解码,直接使用response.content打印出来就是str类型

另外有的网站会直接设置编码方式为utf-8

获取网页内容的编解码问题的三种方式:

decode方式默认utf-8

decode('gbk')

response.text

text与content方法区别的补充:

text方法返回的是对象中字符串的文本,所以结果中没有“”;

content方法返回的是bytes类型需要解码成str

python2中,response.content类型为字符串,response.text类型为unicode。如果请求的网站没有设置编码方式,就是默认编码方式为ISO-8859-1,只要设置response.encoding="utf-8",response.content和response.text打印出来的都是解码后的中文;如果网站设置了编码方式,那么直接打印response.content和response.text即为解码后的中文。

python3中,responnse.content为bytes类型,response.text为str类型。response.content.decode()打印出来的是解码后的中文,而response.text在请求的网站没有设置编码的情况下需要设置response.encoding=”utf-8“,然后打印response.text即为解码后的中文;如果网站设置了编码方式为UTF-8,则直接打印response.text即为解码后的中文。

看不出来编码方式的字符,一定要打印或者type下类型

你可能感兴趣的:(03requests模块)