zoukankan      html  css  js  c++  java
  • 让 http 服务人类 (一)

    1、发送请求

    import requests
    r = requests.get("https://www.baidu.com/")
    print(r)
    r = requests.post('http://httpbin.org/post', data = {'key':'value'})
    print(r)
    """output:<Response [200]>
    """

    2、传递URL参数。如果你想传递 key1=value1 和 key2=value2 到https://www.baidu.com/,Requests 允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。

    import requests
    payload = {"key1":"value1", "key2":"value2"}
    r = requests.get("https://www.baidu.com/", params=payload)
    print(r.url)
    """output:https://www.baidu.com/?key1=value1&key2=value2
    """

    3 、响应内容

    import requests
    r = requests.get('https://leetcode-cn.com/')
    print(r.text)

    4、定制请求头:如果你想为请求添加 HTTP 头部,只要简单地传递一个 dict 给 headers 参数就可以了。

    import requests
    
    url = "https://leetcode-cn.com/"
    headers = {'user-agent': 'my-app/0.0.1'}
    r = requests.get(url, headers = headers)
    print(r.headers)

    5、发送一些编码为表单形式的数据,要实现这个,只需简单地传递一个字典给 data 参数。你的数据字典在发出请求时会自动编码为表单形式。

    import requests

    payload = {'key1':'value','key2':'value2'}
    r = requests.post("http://httpbin.org/post", data=payload)
    print(r.text)
    """
    output: "form": {
    "key1": "value",
    "key2": "value2"
    },
    """

    6、检测相应码。

    import requests,json
    
    url = 'http://httpbin.org/get'
    r = requests.get(url)
    
    #返回相应码
    print(r.status_code)
    
    #状态码查询
    print(r.status_code==requests.codes.ok)
    
    url = 'http://httpbin.org/status/404'
    r = requests.get(url)
    print(r.status_code)
    
    #抛出异常
    print(r.raise_for_status())
    200
    True
    404
    Traceback (most recent call last):
      File "E:/python/practise.py", line 13, in <module>
        print(r.raise_for_status())
      File "E:pythonlibsite-packages
    equestsmodels.py", line 941, in raise_for_status
        raise HTTPError(http_error_msg, response=self)
    requests.exceptions.HTTPError: 404 Client Error: NOT FOUND for url: http://httpbin.org/status/404

    7、响应头。字典形式

    import requests
    r = requests.get("https://www.baidu.com/")
    print(r.headers["content-type"])
    """
    output:text/html
    """

     8、json.dumps()将字典编码成字符串

    import requests,json
    
    url = 'https://api.github.com/some/endpoint'
    payload={"some":"data"}
    
    #json.dumps()将字典编码成字符串
    r = requests.post(url,data=json.dumps(payload))
    
    print(r.status.code)
    
    #使用json直接传参
    r = requests.post(url,json = payload)
    print(r.raise_for_status())

    9、post上传文件。

    import requests,json
    
    url = 'http://httpbin.org/post'
    file = {"file":open("test.log","rb")}
    r=requests.post(url,files = file)
    print(r.text)
    """
    {
      "args": {}, 
      "data": "", 
      "files": {
        "file": "1598690514911	geckodriver	INFO	Listening on 127.0.0.1:50837
    "
      }, 
      "form": {}, 
      "headers": {
        "Accept": "*/*", 
        "Accept-Encoding": "gzip, deflate", 
        "Content-Length": "204", 
        "Content-Type": "multipart/form-data; boundary=2c8ae129f9ccf0e7022223809ec4abaf", 
        "Host": "httpbin.org", 
        "User-Agent": "python-requests/2.24.0", 
        "X-Amzn-Trace-Id": "Root=1-5fa00c93-2d70b71b0beae31f71f73349"
      }, 
      "json": null, 
      "origin": "61.152.201.148", 
      "url": "http://httpbin.org/post"
    }
    """

    10、操作cookies

    import requests
    
    url = 'http://example.com/some/cookie/setting/url'
    r = requests.get(url)
    print(r.cookies)
    
    
    url = 'http://httpbin.org/cookies'
    cookies = dict(cookies_are = "working")
    #发送cookies到服务器
    r = requests.get(url,cookies = cookies)
    print(r.text)
    """
    <RequestsCookieJar[]>
    {
      "cookies": {
        "cookies_are": "working"
      }
    }
    """

     11、json.load()与json.dump()处理文件

    import json
    """
    #写入json数据
    data={"a":"1"}
    with open('data.json',"w") as f:
        json.dump(data,f)
    """
    
    #读取数据
    with open("data.json", "r") as f:
        data=json.load(f)
        print(data)
  • 相关阅读:
    Server Develop (三) 多进程实现C/S
    Server Develop (二) 多线程实现C/S
    Server Develop (一) 简单的TCP/IP C/S
    Server Develop (四) select实现非阻塞sever
    js添加、修改、删除xml节点例子
    网站弹出“位于Google Code SubversionRepository 的服务器……”的解决办法
    iframe嵌入网页
    asp空间判断jmail组件是否安装或支持的代码
    IE8的margintop兼容问题
    不错的CMS,值得借鉴!
  • 原文地址:https://www.cnblogs.com/yijierui/p/13222126.html
Copyright © 2011-2022 走看看