Python Requests模块的基本使用

一、发送请求

1.1 GET

r=requests.get(url)

1.2 POST

r=requests.post(url,[data={key:value}])

1.3 其他

put、delete、head、options等采取和GET、POST一样的格式

二、传递参数

2.1 构建请求体

data={'key1':'value1','key2':'value2'}
request=requests.get(url,params=data)

2.1.1 列表传值

data={'key1':'value1','key2':['value2','value3']}
request=requests.get(url,params=data)

三、响应内容

3.1 打印响应内容

request=requests.get(url)
print(r.text)

Requests会自动解码,所以可以直接打印。

3.2 更改编码格式

r.encoding='编码'

3.3 保存响应内容

with open(filename,'wb') as f:
    for chunck in r:
        f.write(chunck)

四、请求

4.1 定制请求头

headers={'user-agent':'内容'}
request=requests.get(url,headers=headers)
  • 如果设置了用户认证,那么headers设置的授权将不会生效
  • 如果请求遭到重定向,那么header会被删除
  • 代理授权header会被URL中提供的代理身份覆盖
  • Requests不会基于定制header改变自己的行为
  • 所有header值必须是string、bytestring或者unicode

4.2 复杂请求

4.2.1 定制POST请求

4.2.1.1 字典表单
data={'key1':'value1','key2':'value2'}
request=requests.post(url,data=data)

对于data,可以自己进行json编码,如果没有,Requests会自动编码。

4.2.1.2 元组表单
data=(('key1','value1'),('key2','value2'))
request=requests.post(url,data=data)

4.2.2 POST提交多编码文件

4.2.2.1 文件直接上传
file={'file':open(filename,'rb')}
request=requests.post(url,files=file)
4.2.2.2 生成文件上传
file={'file':(filename,'content1,congtent2\ncontent3,content4\n...')}
request=requests.post(url,files=file)

五、响应状态码

5.1 检测响应状态码

5.1.1 打印

request=requests.get(url)
print(request.status_code)

5.1.2 响应码对象校验

print(request.status_code==requests.codes.ok)

5.2 错误请求的处理

5.2.1 异常抛出

bad_r=requests.get(url)
bad_r.raise_for_status()

六、Cookie

6.1 打印Cookie

request=requests.get(url)
print(request.cookies['CookieName'])

6.2 发送Cookie到服务器

cookie=dict(CookieNmae='value')
request=requests.get(url,cookies=cookies)

6.3 发送多Cookie

cookies=requests.cookies.RequestCookieJar()
cookies.set('cookie1','value1',domain='域名',path='路径1')
cookies.set('cookie2','value2',domain='域名',path='路径2')
request=reqeusts.get(url,cookies=cookies)

七、重定向

除了HEAD,Requests会自动处理所有重定向,可以使用history方法来追踪,也可以使用allow_redirects禁用重定向。

7.1 重定向追踪

request=requests.get(url)
print(request.history)

7.2 禁用重定向

request=requests.get(url,allow_redirests=False)

八、超时与其他异常

8.1 超时处理

为避免程序永久失去响应,我们可以设置timeout参数,这样当请求达到一定时常后,程序就会抛出异常。

requests.get(url,timeout=0.001)

8.2 其他异常

  • ConnectionError:网络问题。DNS查询失败、拒绝连接等

  • HTTPError:返回了不成功的状态码

  • Timeout:请求超时

  • TooManyRedirects:超过设定的最大重定向次数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值