requests的基本使用

Reqeusts概述

问题:为什么要学习requests,而不是urllib?

  • requests的底层实现就是urllib
  • requests简单易用
  • requests在python2 和python3中通用,方法完全一样
  • requests能够自动帮助我们解压(gzip压缩的等)网页内容

requests的作用

requests的基本使用

  • 安装requests模块: pip install requests
  • 使用步骤(三部曲):

    • 导入模块: import reqeusts
    • 发送get请求,获取响应: response = requests.get(url)
    • 从响应中获取数据
  • 核心代码: 发送get请求

    response = requests.get(url)
  • response的常用属性:
    • response.text
    • respones.content 二进制形式的响应数据
    • response.status_code 响应状态吗
    • response.headers 响应头
    • response.request.headers 请求头
  • response.text 和response.content的区别
    • response.text
      • 类型:str
      • 解码类型: 根据HTTP头部对响应的编码作出有根据的推测,推测的文本编码
      • 如何修改编码方式:response.encoding=”gbk”
    • response.content
      • 类型:bytes
      • 解码类型: 没有指定
      • 如何修改编码方式:response.content.deocde(“utf8”)
    • 推荐使用response.content.deocde()的方式获取响应的html页面
  • 需求:通过requests向百度首页发送请求,获取百度首页的数据
    # 1. 导入这个模块; 如果没有就安装一下: pip install resquests
    import requests
    # 2. 发送请求(get)
    response = requests.get("http://www.baidu.com/")
    # 3. 读取数据
    # response.encoding = "utf8"
    # #print(response.encoding) #ISO-8859-1 拉丁文编码表; 希腊等一些欧洲国家
    #  text 属性: 返回 自动识别编码的字符穿, 如果要指定编码,可以使用encoding的属性来指定编码
    # content = response.text
    # print(content)
    # content 属性: 获取的是二进制数据,使用decode进行解码
    data = response.content.decode()
    print(data)
    # response.status_code  响应状态吗
    print(response.status_code)
    # response.request.headers  请求头
    print(response.request.headers)
    # response.headers   响应头
    print(response.headers)

怎么才能做到100%的解决乱码问题

  1. 先使用decode()来尝试解码, 现在国内80%网站都是用utf-8进行编码的
  2. 如果上面面没有解决乱码问题,就指定GBK的编码方式, 个别网站使用的是GBK
  3. 如果指定GBK还不行,就request的自动推断功能了,通过text 属性获取
    # 1. 现在国内80%网站都是用utf-8进行编码的
    data = response.content.decode()
    print(data)
    # 2. 如果上面面没有解决乱码问题,就指定GBK的编码方式
    # data = response.content.decode("GBK")
    # 3. 如果指定GBK还不行,就request的自动推断功能了,通过text 属性获取
    # data = response.text
posted @ 2018-08-13 15:54  Huai998  阅读(270)  评论(0编辑  收藏  举报