python中requests请求详解

本文详细介绍了如何使用Python的requests库进行GET和POST请求,包括不同格式的数据传输方式,并提供了获取和发送Cookie的具体方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、GET请求

requests.get(url,params=None,**kwargs)

  • url:拟获取页面的url链接
  • params:url中的额外参数,字典或者字节流格式,可选
  • **kwargs:12个可控制访问的参数
import requests
#不带参数的get请求
requests.get('http://www.baidu.com')
#带参数的get请求方式一
requests.get('http://www.baidu.com/s?cl=3&baidutop10&fr=top100')
#带参数的get请求方式二
data={
'name':'germey',
'age':22
}
response=requests.get('http://www.baidu.com',params=data)

二、POST请求

  • 一个正常的post请求主要包含请求行、请求头、请求主体
  • Content-Type的格式主要有四种:applicaton/x-www-form-urlencoded与application/json、text/xml、以及multipart/form-data格式
1)applicaton/x-www-form-urlencoded数据格式

requests支持以form表单形式发送post请求,只需要将请求的参数构造成一个字典,然后传给requests.post()的data参数即可

import requests
datas={'parameter1':'12345','parameter2':'23456'}
r=requests.post(url=url,data=data)
2)application/json数据格式

application/json格式的请求头是指用来告诉服务端post过去的消息主体是序列化后的json字符串

import requests
import json
data={'parameter1':'12345','parameter2':'23456'}
data=json.dumps(data)
r=requests.post(url=url,data=data)

applicaton/x-www-form-urlencoded和application/json的最大差别在于请求主体的构造格式,前者是字典传入,后者为json字符串格式

3)text/xml数据格式
xml="""my xml """
headers={'Content-Type':'application/xml'}
requests.post(url,data=xml,headers=headers)
#或者把xml作为一个文件来传输
4)multipart/form-data数据格式

除了传统的application/x-www-form-urlencode表单,我们另一个经常用到的是上传文件用的表单,这种表单的类型为multipart/form-data.

url=‘http://www.example.com’
files={‘file’:open(’./data.xlsx’,‘rb’)}
r=requests.post(url,files=files)

三、requests中遇到问题

  • 获取cookie
# -*- coding:utf-8 -*-
#获取cookie
import requests
import json

url = "https://www.baidu.com/"
r = requests.get(url)

#将RequestsCookieJar转换成字典
c = requests.utils.dict_from_cookiejar(r.cookies)
print(r.cookies)
print(c)

for a in r.cookies:
    print(a.name,a.value)

>> 控制台输出:
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
{'BDORZ': '27315'}
BDORZ 27315
  • 发送Cookie
# -*- coding:utf-8 -*-
#发送cookie到服务器
import requests
import json

host = "*****"
endpoint = "cookies"

url = ''.join([host,endpoint])
#方法一:简单发送
# cookies = {"aaa":"bbb"}
# r = requests.get(url,cookies=cookies)
# print r.text

#方法二:复杂发送
s = requests.session()
c = requests.cookies.RequestsCookieJar()
c.set('c-name','c-value',path='/xxx/uuu',domain='.test.com')
s.cookies.update(c) 

推荐文章:https://www.cnblogs.com/zhengyao9236/p/11122446.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值