python的requests模块参数详解[转载]

import requests
 
print(dir(requests))
 
# 1、方法
# ['ConnectTimeout', 'ConnectionError', 'DependencyWarning', 'FileModeWarning', 'HTTPError', 'NullHandler', 'PreparedRequest', 'ReadTimeout', 'Request', 'RequestException', 'RequestsDependencyWarning', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__author_email__', '__build__', '__builtins__', '__cached__', '__cake__', '__copyright__', '__description__', '__doc__', '__file__', '__license__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__title__', '__url__', '__version__', '_check_cryptography', '_internal_utils', 'adapters', 'api', 'auth', 'certs', 'chardet', 'check_compatibility', 'codes', 'compat', 'cookies', 'delete', 'exceptions', 'get', 'head', 'hooks', 'logging', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'session', 'sessions', 'status_codes', 'structures', 'urllib3', 'utils', 'warnings']
 
 
# 2、参数
requests.get(
    url="http://www.baidu.com",
    headers="",
    cookies="",
    params={"k1":"v1","k2":"v2"},
    # url中传递的参数,效果如下
    # http://www.baidu.com?k1=v1&k2=v2
)
 
requests.post(
    url="",
    headers="",
    cookies="",
    data={
    },
    params={"k1": "v1", "k2": "v2"},
    # url中传递的参数,效果如下
    # http://www.baidu.com?k1=v1&k2=v2
)
 
# 我们可以通过data传递请求体,也可以通过json传递请求体
 
data = {
        "username":"admin",
        "pwd":"admin"
       },
 
# 则请求体中的数据为username=admin&pwd=admin
 
 
# 参数json
 
json = {
        "username":"admin",
        "pwd":"admin"
       },
 
# 则请求体中的数据为{"username":"admin","pwd":"admin"}
 
# 参数代理
 
    # 定义一个字典
proxies = {
    "http":"61.24.25.21",
    "https":"http://65.21.24.1"
}
 
 
 
# http请求走http对应的地址,https请求走https对应的地址,在访问的请求中加一个proxies的参数
l1 = requests.get(url="https://passport.lagou.com/login/login.html",
                  headers={
                      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                  },
                  proxies = proxies
                  )
 
# 给代理加认证
from requests.auth import HTTPProxyAuth
proxies = {
    "http":"61.24.25.21",
    "https":"http://65.21.24.1"
}
auth = HTTPProxyAuth("username","passwd")
 
# http请求走http对应的地址,https请求走https对应的地址,在访问的请求中加一个proxies的参数,在加一个参数auth,这个是登陆代理的用户名和密码
l2 = requests.get(url="https://passport.lagou.com/login/login.html",
                  headers={
                      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                  },
                  proxies = proxies,
                  auth = auth
                  )
 
 
# 参数文件上传,post方法发送请求,传递一个file的参数
 
file= {
    "f1":open("a.txt","rb")
}
l3 = requests.post(url="https://passport.lagou.com/login/login.html",
                  headers={
                      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                  },
                  proxies = proxies,
                  auth = auth,
                  file = file
                  )
 
 
# 可以设置上传文件的名称,前面的例子上传的文件的名称就是文件本身的名称
file= {
    "f1":("new_file_name",open("a.txt","rb"))
}
l4 = requests.post(url="https://passport.lagou.com/login/login.html",
                  headers={
                      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                  },
                  proxies = proxies,
                  auth = auth,
                  file = file
                  )
 
# 参数认证
from requests.auth import HTTPBasicAuth
from requests.auth import HTTPDigestAuth
 
l5 = requests.get(url="https://passport.lagou.com/login/login.html",
                  headers={
                      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                  },
                  proxies = proxies,
                  auth = HTTPBasicAuth("admin","admin")
                  )
 
 
# 超时参数
l6 = requests.get(url="https://passport.lagou.com/login/login.html",
                  headers={
                      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                  },
                  timeout = 2
                  )
 
# 超时时间为2s,2s连不上返回错误
 
 
# 允许重定向
l7 = requests.get(url="https://passport.lagou.com/login/login.html",
                  headers={
                      "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                  },
                  allow_redirects = False
                  )
 
 
# stream大文件下载的参数,把文件一点一点的下载,如果这个值为false,则全部写到内存中了
 
from contextlib import closing
with closing(requests.get("http://ddddddd",stream=True)) as f:
    for i in f.iter_content():
        print(i)
 
 
# cert,证书参数,告诉request去这个地方去下载cert
l8 = requests.get(url="https://passport.lagou.com/login/login.html",cert="xxx/xxx/xxx/xxx/pem")
 
l9 = requests.get(url="https://passport.lagou.com/login/login.html",cert=("xxx/xxx/xxx/xxx/pem","yyy/yyy/yyy.key"))
 
 
# session,为我们自动带上cookies和请求头
import requests
session = requests.session()
 
i1 = session.get(url="")
 
 
i2 = session.post(
    url="",
    data={}
)
 
i3 = session.post()

通过request发送post请求,什么时候使用data参数,什么时候使用json参数呢,可以通过抓包来分析

在chrom浏览器中,数据格式为Form Data,如果通过requests发送数据,则用data来发送数据

在chrom浏览器中,数据格式为Request Payload,如果通过requests发送,则用json来发送数据

如果传递的json格式,但是数据有中文呢就额可以使用下面的方式来发送数据

data = bytes(json.dumps(
     data_dict,
     ensure_ascii=False
 ),encoding="utf-8")

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值