python中的请求方法_python接口测试中不同的请求方式

创建一个session

s=requests.session

1、get请求方式

(1)get请求的时候对应的请求参数形式为Query String Parameters,参数直接反映在url里面,形式为key1=value1&key2=value2

例如:https://*****/taker_order_count?team_id=100&team_address=dsdsd

使用python发送请求时,直接使用params关键字,以一个字典来传递这些参数,如

params={"key1":"value1","key2":"value2"}

re = s.request(get,url=url,params=params)

2、post请求方式

(1) post请求content-type类型是:Content-Type:application/x-www-form-urlencoded,对应的请求参数形式为Form Data

使用requests发送请求时,只要将请求的参数构造成一个字典,然后使用data参数即可

data={"key1":"value1","key2":"value2"}

re = s.request(post,url=url,data=data)

注意:如果data中嵌套字典,一定要将字典转化成字符串,如:

info = { "appid": "123", "checkin_type": "6", "role": "1", "stunum": "15812086122" }

data = { 'Data': '%s' % info, 'MsgType': 'APP_SEND_CARDCHECKIN_BYSTUNUM' }

re = s.request(post,url=url,data=data)

(2)post请求content-type类型是:Content-Type:application/json对应的请求参数形式为request payload

Reqeusts支持以request payload形式发送post请求,application/json格式的请求头是指用来告诉服务端post过去的消息主体是序列化后的 JSON 字符串。使用python写接口自动化定义接口时需要使用json.dumps()将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错

params= {

'dealRemark': dealRemark,

'headApplyId': headApplyId,

'reassignedTakerId': reassignedTakerId,

'status': status,

'teamId': teamId,

'trackingId': trackingId

}

body = json.dumps(params)

re = s.request(post,url=url,data=data)

或者直接使用json关键字传递参数

re = s.request(post,url=url,json=params)

(3)传参带文件,post上传文件,首先需要构造file,格式如下,fp为文件路径,然后将构造好的file传给files即可

file = { 'file_name': open(fp, 'rb') }

re = s.request(post,url=url,jfiles=file)

(4)post请求 Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA

body = MultipartEncoder(fields=body_data,boundary='------' + ''.join(random.sample(string.ascii_letters + string.digits, 32)))

header['content-type'] = body.content_type

参考:

https://www.bbsmax.com/A/obzbN72MzE/

https://blog.csdn.net/m0_37556444/article/details/82845694

或者直接使用files关键字上传

#请求的接口url

url = "url"

#假设待上传文件与脚本在同一目录下

dir_path = os.path.abspath(os.path.dirname(__file__))#待上传文件的路径,这里假设文件名为test.txt

file_path = os.path.join(dir_path,'test.txt')'''field_1,field_2...field_n代表普通字段名

value_1,value_2...value_n代表普通字段值

files为文件类型字段

实际应用中字段名field_n均需要替换为接口抓包得到的实际字段名

对应的字段值value_n也需要替换为接口抓包得到的实际字段值'''files={'field_1':(None,'value_1'),'field_2':(None,'value_2'),

...'field_n':(None,'value_n'),'files':('test.txt',open(file_path,'rb'),'text/plain'),

}

r= s.post(url,files=files)

参考https://www.bbsmax.com/A/kvJ3jLBgzg/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种功能强大的编程语言,可以用于编写各种应用程序,包括网络爬虫。网络爬虫是一种可以自动从互联网上抓取数据的程序,它可以用于数据挖掘、搜索引擎优化、市场情报等多个领域。 Python网络爬虫源代码的编写过程包括以下几个步骤: 第一步,请求目标网站。使用Python的requests库向目标网站发送http请求,并获取返回的网页内容。请求过程需要设置请求头,以模拟浏览器访问,避免被目标网站封禁。 第二步,解析网页内容。使用Python的正则表达式或者第三方库BeautifulSoup对网页进行解析,以提取自己需要的数据。正则表达式用于提取规则比较固定的数据,而BeautifulSoup则适用于提取HTML结构化数据。 第三步,保存数据。将提取到的数据保存到本地或者数据库,以便后续的数据分析和使用。保存方式可以选择CSV、JSON或者数据库等多种方式。 第四步,设置爬虫规则。为了避免被目标网站封禁,需要设置合理的爬虫规则,包括时间间隔、请求频率、请求头等等。还需要遵守robots协议,禁止爬取受保护的数据。 第五步,创建多个线程或进程。为了提高爬取效率,需要使用多线程或者多进程的方式进行爬取。多线程方式可以使用Python的threading模块,而多进程则可以使用multiprocessing模块。 以上就是Python网络爬虫源代码的基本编写过程。不过需要注意的是,在实际使用还需要考虑目标网站的反爬虫策略,以及自身爬虫的合法性和道德性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值