• python3:requests模块-写了一点


    使用requests,它的七个主要方法,在这里只讲两个:get、post

    >>> import requests

    >>> r=requests.get("http://www.baidu.com")

    >>> r.status_code 200

    >>> r.encoding 'ISO-8859-1'

    >>> r.apparent_encoding 'utf-8'

    >>> r.text  # 发现编码不行,改编码

    >>> r.encoding='utf-8'

      注意requests库有时会产生异常,比如网络连接错误、http错误异常、重定向异常、请求url超时异常等等。所以我们需要判断r.status_codes是否是200。

    我们可以利用r.raise_for_status()语句去捕捉异常,该语句在方法内部判断r.status_code是否等于200,如果不等于,则抛出异常。

    一个爬取网页的通用代码框架:

    try:

      r=requests.get(url,timeout=30)#请求超时时间为30秒

      r.raise_for_status()#如果状态不是200,则引发异常

      r.encoding=r.apparent_encoding #配置编码

      return r.text

    except:

      return"产生异常"

    params = {'k1':'v1','k2':'v2'}         

    r = requests.post('http://192.168.165.4:8000/show/testreport/',data=params)        

    在服务器端用request.POST.get("data")什么也获取不到,用request.body获取到的是b'k2=v2&k1=v1'

    但这样的格式怎么也转不成字典,        

    r = requests.post('http://192.168.165.4:8000/show/testreport/',json=params)        

    用request.body获取到b'{"k2": "v2", "k1": "v1"}',其实我想说的是:

    在客户端产生了一个字典,由于需要加密,所以成了这样的数据:b'qwrasdfsdfsfa',怎么发呢?

    直接发就行:

    a = b'qwrasdfsdfsfa'

    r = requests.post('http://192.168.165.4:8000/show/testreport/',data=a)

    然后在服务器端用request.body()获取数据然后解密就行。

     

    python3-requests详解:https://www.cnblogs.com/ranxf/p/7808537.html

  • 相关阅读:
    hdu 1176 免费馅饼
    http://codeforces.com/contest/741/problem/B B. Arpa's weak amphitheater and Mehrdad's valuable Hoses
    瞎搞题
    1D1D决策单调性dp
    整体二分(POJ2104 静态第k大查询)
    B
    http://codeforces.com/contest/776/problem/G
    http://codeforces.com/contest/776/problem/D 2-sat
    bzoj1492(cdq分治 && 平衡树维护dp)
    F. Bear and Bowling 4(斜率优化)
  • 原文地址:https://www.cnblogs.com/fawaikuangtu123/p/9780282.html
Copyright © 2020-2023  润新知