• Python爬虫——Requests 的Get和Post请求


    Python爬虫——Requests 的Get和Post请求

    1、Get请求

    Get请求

    方法:requests.get(),通过GET请求访问一个页面,对应于 HTTP 的 GET 方法

    使用格式:

    get(url, params=None, **kwargs)
    
    • 1

    参数说明:

    • url:请求url
    • params:请求参数(可选),以字典形式(元组列表或字节列表)来提供这些参数,字典类型自动转换为url编码,不需要urlencode()
    • **kwargs:可选参数,如 cookies、headers、timeout等

    使用实例

    import requests
    # 请求url中的 `?`可以不加
    url = 'https://www.baidu.com/s'
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'
    }
    
    # 请求参数,字典里值为 None 的键都不会被添加到 URL 的查询字符串里
    date = {
        'wd':'毛不易'
    }
    # 发送请求返回响应对象
    response_get = requests.get(url=url,params=date,headers=headers)
    # 打印网页源码,,requests会基于HTTP响应的文本编码自动解码响应内容,大多数Unicode字符集都能被无缝地解码
    print(response_get.text)
    # 打印cookie信息
    print(response_get.cookies)
    # 打印状态码
    print(response_get.status_code)
    # 打印响应对象编码
    print(response_get.encoding)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    执行结果:

    ... 网页源码内容...
    # 打印cookie信息
    , , , , , , , , ]>
    
    # 打印状态码
    200
    
    # 打印响应对象编码
    utf-8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    requests.Get 请求和 urllib.request.Get请求对比:

    • requests.Get 请求使用get方法,urllib.request.Get请求使用urlopen方法
    • requests.Get 请求参数使用 params 传递,urllib.request.Get请求参数拼接在url后面
    • requests.Get 请求不需要定制请求对象,请求url中的 可以不加

    2、Post请求

    Post请求

    方法:requests.post(),通过POST请求访问一个页面,对应于 HTTP 的 POST方法

    使用格式:

    requests.post(url, data=None, json=None, **kwargs)
    
    • 1

    参数说明:

    • url:请求 url
    • data:请求参数(可选),以字典形式(元组列表、字节或文件)来提供这些参数
    • json:在请求中发送的 json 数据
    • **kwargs:可选参数,如 cookies、headers、timeout等

    使用实例

    import json
    
    import requests
    
    url = 'https://fanyi.baidu.com/sug'
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'
    }
    
    # 请求参数
    date = {
        'kw':'spring'
    }
    # 发送请求返回响应对象
    response_post = requests.post(url=url,data=date,headers=headers)
    
    content = response_post.text
    # 反序列化
    obj = json.loads(content,encoding='utf-8')
    print(obj)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    执行结果:返回json数据

    {'errno': 0, 'data': [{'k': 'spring', 'v': 'n. 春季; 泉水,小溪; 弹簧,弹性; 跳跃 vi. 跳,跃; 突然发出或出现; 发源; 劈开,裂'}, {'k': 'Spring', 'v': '[人名] [英格兰人姓氏] 斯普林语源不详,可能来源于古英语别名,含义是“跳跃”(to jump,l'}, {'k': 'SPRING', 'v': 'abbr. shared protection ring 共享保护环'}, {'k': 'springe', 'v': 'n. 圈套 v. 设圈套'}, {'k': 'springs', 'v': 'n. 弹簧; 泉; 春( spring的名词复数 ); 跳 v. [口语]花(钱)(for)( sp'}]}
    
    • 1

    Requests对于JSON类型的响应数据可以直接获取:

    response_post.json()
    
    • 1
  • 相关阅读:
    android应用开发基础知识,安卓面试2020
    CorelDRAW2023全新版功能及下载安装教程
    【MySQL知识点】自动增长
    dataprp库本地参数
    定时任务系列(8)-Quartz启动核心原理之集群
    Java 21的StringBuilder和StringBuffer新增了一个repeat方法
    06 Thread API
    计算机网络的常见面试题
    第3.1章:StarRocks数据导入——Insert into 同步模式
    css3实现一个3d楼梯动画
  • 原文地址:https://blog.csdn.net/wpc2018/article/details/126424298