美文网首页spider
03requests模块

03requests模块

作者: python_spider | 来源:发表于2017-11-18 04:15 被阅读162次

    中文文档 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模块

        本文链接:https://www.haomeiwen.com/subject/twosvxtx.html