• requests模块的基本使用


    requests的基本使用

    """
    
    # 1、request模块的基本使用
    
    import requests
    
    ### 发送HTTP请求
    
    # get,post等请求其实本质就是调用request函数
    ret = requests.get('https://www.cnblogs.com')
    print(ret.status_code)  # 响应状态码
    print(ret.text)  # 响应体,转成了字符串
    print(ret.content)  # 响应体,二进制
    
    ret1 = requests.post()
    
    
    # 2、get请求带参数的写法
    # 方式一
    ret = requests.get('http://127.0.0.1:8000/?name=alen',
                       headers={
                        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
                       })
    
    
    # 放式二(推荐使用,因为中文会自动转码)
    ret = requests.get('http://127.0.0.1:8000/',params={'name': 'alen', 'age':18})
    print(ret.text)
    
    
    
    # 3、带headers
    ret = requests.get('http://127.0.0.1:8000/?name=alen',
                       headers={
                        # 标识:什么浏览器发送的信息,请求头相关的东西都在META中获取
                        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
                        # 上一个页面的地址,作用图片防盗链
                        'Referer': 'xxx'
                       })
    
    print(ret)
    # 图片防盗链:如果图片的referer不是自己的网站就直接禁止掉
    
    
    # 4、带cookie,随机字符串(用户信息,也代表session),这里不管后台用的token还是session认证,这里统一都叫cookie
    
    # 第一种方式
    ret = requests.get('http://127.0.0.1:8000/?name=alen',
                       headers={
                        'cookie': 'key=value;key2=value',
                       })
    
    
    # 第二种方式
    ret = requests.get('http://127.0.0.1:8000/?name=alen',
                       cookies={"alen": "trust yourself"})
    
    
    print(ret)
    
    
    
    # 5、发送post请求(注册,登录)携带数据(body)
    
    # 注意:如果你用的是data默认请求体中用的是urlencoded编码
    ret = requests.post('http://127.0.0.1:8000/', data={'name':'alen','age':18})
    
    
    import json
    data = json.dumps({'name':'alen', 'age': 18})
    # 注意:json是json编码,要想获取只能在body这中拿
    ret = requests.post('http://127.0.0.1:8000/', json=data)
    print(ret)
    
    # 注意:编码格式是请求头中带的,所以我们可以手动修改,在headers中修改
    
    
    # 6、session对象
    session = requests.session()
    # 跟requests.get/post用起来完全一样,但是它帮我们处理了cookie
    
    # 假设是一个登陆,并且成功
    session.post()
    # 再向该网站发送请求,就是登陆状态,不需要手动携带cookie
    session.get('地址')
    
    
    # 7 响应对象
    print(respone.text)   # 响应体转成str
    print(respone.content) # 响应体二进制(图片,视频)
    
    print(respone.status_code) # 响应状态码
    print(respone.headers) # 响应头
    print(respone.cookies) # 服务端返回的cookie
    print(respone.cookies.get_dict()) # 转成字典
    print(respone.cookies.items())
    
    print(respone.url)  # 当次请求的地址
    print(respone.history) # 如果有重定向,会放到一个列表中
    ret=requests.post('http://127.0.0.1:8000/')
    ret=requests.get('http://127.0.0.1:8000/admin')
    #不要误解
    ret=requests.get('http://127.0.0.1:8000/user')
    print(ret.history)
    
    print(respone.encoding) # 编码方式
    
    #response.iter_content() # 视频,图片迭代取值
    with open("a.mp4",'wb') as f:
        for line in response.iter_content():
            f.write(line)
    
    
    # 8 乱码问题
    # 加载回来的页面,打印出来,乱码(我们用的是utf8编码),如果网站用gbk,
    ret.encoding='gbk'
    ret=requests.get('http://127.0.0.1:8000/')
    # ret.apparent_encoding  #当前页面的编码
    ret.encoding=ret.apparent_encoding
    
    
    # 9、解析json
    # 返回数据有可能是json格式,也有可能是HTML格式
    ret = requests.get('http://127.0.0.1:8000/')
    
    print(type(ret.text))  #<class 'str'>
    print(ret.text)  # {"name": "alen", "age": 18}
    
    a = ret.json()  # 帮我们转成json格式,也就是我们传过来的json字典
    print(a)  # {'name': 'alen', 'age': 18}
    print(type(a))  # <class 'dict'>
    
    
    # 10 使用代理
    # 正向代理
    # django如何拿到客户端ip地址 META.get("REMOTE_ADDR")
    # 如何去获取代理,如何使用(用自己项目验收)
    # 使用代理有什么用
    # ret=requests.get('http://127.0.0.1:8000/', proxies={'http':'地址'})
    ret=requests.get('http://127.0.0.1:8000/')
    print(type(ret.text))
    print(ret.text)
    
    
    # 11 异常处理
    # 用try except捕获一下 就用它就型了:Exception
    
    # 12 上传文件(爬虫用的比较少,后台写服务,)
    file={'myfile':open("1.txt", 'rb')}
    ret=requests.post('http://127.0.0.1:8000/', files=file)
    print(ret.content)
    """
    
  • 相关阅读:
    项目需求分析
    对软件开发的感想
    趣拼图最后完成及总结
    UML用例图
    数据流图和数据流程图
    第三代迭代目标
    Scrum的三种角色划分及小组成员分工
    WBS Model
    团队开发—百科全书软件项目
    开发流程
  • 原文地址:https://www.cnblogs.com/yafeng666/p/12663269.html
Copyright © 2020-2023  润新知