• 第十篇 requests模块


    1.安装requests

    要安装requests,在终端中输入以下命令即可安装:

    1 pip3 install  requests

    2.发送请求

    使用requests发送请求首先需要导入requests模块,然后发送get请求到网站:

    1 import requests
    2 
    3 r = requests.get("http://www.baidu.com")

    发送其他类型的请求:

    1 import requests
    2 
    3 r = requests.post("http://www.xxx.com", data={"key": "value"})
    4 r = requests.put("http://www.xxx.com/method", data={"key": "value"})
    5 r = requests.delete("http://www.xxx.com/delete")
    6 r = requests.head("http://www.xxx.com/get")
    7 r = requests.options("http://www.xxx.com/get")

    3.传递URL参数

    如果希望为URL的查询字符串传递数据,Python提供了支持,数据会议键/值对的形式置于URL中,跟在一个问号后面。

    1 import requests
    2 
    3 r = requests.get("http://www.baidu.com/s", params={"wd": "Python"})
    4 
    5 print(r.url)
    6 
    7 -------输出结果---------
    8 http://www.baidu.com/s?wd=Python

    4.状态码

    从请求的响应中获取状态码,状态码会展示请求的状态。

    如,状态码为200 OK表示请求成功,404 NOT FOUND表示找不到资源,可以通过response对象的.status_code查看返回的状态码:

    1 In [1]: import requests
    2 
    3 In [2]: r = requests.get("http://www.baidu.com")
    4 
    5 In [3]: r.status_code
    6 Out[3]: 200

    4.获取响应内容

    我们可以读取服务器响应的内容。

    1 import requests
    2 
    3 r = requests.get("http://www.baidu.com")
    4 r.encoding = "utf-8"
    5 print(r.text)

    说明:r.text返回的是Unicode格式,通常需要转换为utf-8,不然的话,会是乱码,通过使用r.encoding='utf-8',可以避免乱码的问题。

     5.获取二进制响应内容

    1 import requests
    2 
    3 r = requests.get("http://www.baidu.com")
    4 print(r.content)
    5 print(r.content.decode("utf-8"))

    r.content获取二进制数据,可以用来下载视频,图片之类,如果想要看的话,可以使用r.content.decode()解码。

    6.获取JSON格式内容

    1 import requests
    2 
    3 r = requests.get("http://www.xxx.com")
    4 print(r.json())

    使用r.json处理json数据。

    7.定制请求头

    当我们使用如下方式访问知乎时,是无法访问的,需要添加headers信息。

     1 r = requests.get("https://www.zhihu.com")
     2 r.encoding = "utf-8"
     3 print(r.text.encode("gbk", "ignore").decode("gbk"))
     4 
     5 ------输出结果------
     6 <html>
     7 <head><title>400 Bad Request</title></head>
     8 <body bgcolor="white">
     9 <center><h1>400 Bad Request</h1></center>
    10 <hr><center>openresty</center>
    11 </body>
    12 </html>

    想要访问就必须添加headers信息:

    1 import requests
    2 
    3 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}
    4 r = requests.get("https://www.zhihu.com", headers=headers)
    5 
    6 r.encoding = "utf-8"
    7 print(r.text.encode("gbk", "ignore").decode("gbk"))

     8.发送post请求

     1 import requests
     2 
     3 data = {
     4     "name": "zhangsan",
     5     "age": "28"
     6 }
     7 
     8 r = requests.post("http://httpbin.org/post", data=data)
     9 
    10 print(r.text)

    9.响应

     1 # -*- coding:utf-8 -*-
     2 import requests
     3 
     4 r = requests.get("http://www.baidu.com")
     5 # 输出请求页面的状态码
     6 print(r.status_code)
     7 # 输出请求页面的所有请求头信息
     8 print(r.headers)
     9 # 输出请求的cookies信息
    10 print(r.cookies)
    11 # 输出请求的地址
    12 print(r.url)
    13 # 打印请求的历史记录
    14 print(r.history)
  • 相关阅读:
    ESP8266 STA TCP 客户端配置并连接通信
    Modbus CRC16 校验计算函数
    自写简易版从机Modbus
    STM32CubeIDE查看内存使用情况
    WPF 样式Style
    WPF选项卡页面分离之Page调用Window类
    WPF 多个选项卡TabControl 页面分离
    STM32Cube IDE 汉字字体变小解决办法
    浮点数double相等性比较
    Ling应用
  • 原文地址:https://www.cnblogs.com/zhuzhaoli/p/10368396.html
Copyright © 2020-2023  润新知