requests

发送http请求类型:get、post、put、delete、head

get 参数:params

值:字典格式

嵌套列表

array数组

import requests

from urllib.parse import unquote

url="http://www.example.com"

p1={"a":"1"}

r1=requests.get(url,params=p1) #字典格式

print(r1.url)

p2=[["a","1"],["a","2"]] #嵌套列表

r2=requests.get(url,params=p2)

print(r2.url)

p3={"a[]":"1,2"} #字典,传array数组

r3=requests.get(url,params=p3)

print(unquote(r3.url))

运行结果

post

1.参数:data,

值:字典格式 ;

元组列表(("a","b"),("a","b"),("c","e"));

字符串json.dumps(字典格式);"xml格式"(注意:字符串中内容跨行,使用\)

2.参数:json ,值:字典格式,自动转码(字符串)

3.参数:files,值:{“键名”:(“文件名”,open(“文件名”,“rb”),“image/jpeg”)}

某一位置上传多图,

f={

(“键名”,(“文件名1”,open(“文件名1”,“rb”),“image/jpeg”)),

(“键名”,(“文件名2”,open(“文件名2”,“rb”),“image/jpeg”)),

}

s.post(url,files=f)

如何判断post请求中使用什么参数?可以通过fiddler抓包请求,查看Inspectors——JSON中显示数据,则使用json参数;查看Inspectors——WebForms中显示数据,则使用data参数。

响应结果

r.status_code; r.text; r.text.encode("utf-8"); r.text.encode("utf-8").decode('unicode_escape') #unicode解码; r.content; r.encoding; r.headers; r.url; r.json();

r.raw;

SSL证书验证

requests可以为HTTPS请求验证SSL证书,verify=True默认是开启的。

不启用fiddler不报SSL问题;启用fiddler抓包报SSLError;

解决办法:1.verify=False,但出现InsecureRequestWarning。

忽略Warning三种方法:

import requests

import warnings

#warnings.filterwarnings("ignore") #方式1

#requests.packages.urllib3.disable_warnings()#方式2

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)#方式3

r=requests.get("https://www.baidu.com",verify=False)

print(r.status_code)

cookie绕过验证码登录

1.fiddler抓登录后cookie

2.主要请求如下:

s=requests.session()

#添加cookie

c=requests.cookies.RequestsCookieJar()

c.set("名1","值1")

c.set("名1","值1")

s.cookies.update(c)

print(s.cookies)

会话对象(保持会话)

s=requests.session()

s.get(...)

s.post(...)

requests-html爬虫框架

hs=HTMLSession()

hr=hs.get(网址)

hlinkes=hr.html.links  #获取页面上的所有链接

alinkes=hlinkes.absolute_links  #获取绝对路径链接

提取参数(文本内容):css定位支持,hr.html.find("css语法",first=True).text

xpath ,hr.html.xpath("xpath语法",first=True).text

当然这里也可以通过lxml.etree 的 xpath,python正则来提取,直接使用requests或requests.session()请求

requests-html支持JavaScript渲染;加上,hr.html.render(),类似于手工在浏览器上输入url。

不加,只有一条请求,加上可以有n条请求。

参数关联,提取参数

cookies参数关联,使用requests.session()请求就自动关联了

提取参数:针对字符串取值,python正则表达式re.findall("开头(.+?)结尾",字符串格式);

lxml.etree 通过返回的html,解析出想要的text;a=etree.HTML(r.content); b=a.xpath("//*[@id="block"]")[0].get("value")

针对dict类型取值,jsonpath.jsonpath(字典格式,jsonpath表达式)

urlencode编码 如,%E7%94%

requests库发送请求时,会自动对url进行urlencode编码并发送,可通过r.url查看发送的url

如何自己对url进行urlencode编码?urlencode方法传字典参数,quote方法传字符串参数

如何对返回数据有urlencode编码的字符串解码?使用unquote

md5加密

import hashlib

#方式1

a=hashlib.md5()

a.update("123456".encode('utf-8'))

print(a.hexdigest())

#方式2

b=hashlib.md5('123456'.encode('utf-8'))

print(b.hexdigest())

重定向(Location)

301 永久性重定向,302 暂时性转移

默认情况下,allow_redirects=True是启用重定向的。

禁用重定向,allow_redirects=False

requests-toolsbelt

表单提交 fields={"键1":"值1","键2":"值2"}

多个文件参数名重复,使用list类型

注意:fields= 可不用写

from requests_boolbelt import MultipartEncoder

import requests

s=requests.session()

m=MultipartEncoder(

fields=[

("名1",("文件名",open("文件名","rb"),"image/jpeg")), #附件

("名1",("文件名1",open("文件名1","rb"),"image/jpeg")), #附件1

(“名2”,"值3"),

])

s.post(url,data=m,headers={'Content-Type':m.content_type})

elapsed

从发送请求的第一个字节到完成对头的解析所用的时间。

获取响应时间 r.elapsed.total_seconds()

timeout超时

requests发请求的时候有个默认的超时时间,这个时间在20秒左右

timeout=1。超过1s,就会抛出异常。

失败重试 max_retries

Requests自带一个传输适配器,也就是HTTPAdapter

每当Session被初始化,就会有适配器附着在Session上,其中一个供HTTP使用,另一个供HTTPS使用。

from requests.adapters import HTTPAdapter

s=requests.session()

s.mount('http://',HTTPAdapter(max_retries=3))#重试3次

s.mount('https://',HTTPAdapter(max_retries=3))

上传文件时自动判断文件类型(filetype)

如下,由文件路径,得到上传附件的部分参数

import filetype

import os

rp="D:\\ch.jpg"

t=filetype.guess(rp).mime

print(t)

pname=os.path.split(rp)[1]

#post请求files参数值的部分内容

print('("{}",open("{}","rb"),"{}")'.format(pname,rp,t))

运行结果

python怎么写接口自动化_python接口自动化 小结相关推荐

  1. python 自动上报json信息_python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  2. python 接口自动化_Python 接口自动化测试

    1. 接口基础知识 1.1 接口分类 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口. (1) webservice接口:走soap协议通过http传输,请求报文和返回报文都是xml格 ...

  3. python自动化_Python报表自动化

    01-报表自动化 要做报表自动化,我们需要考虑清楚3个问题​. Q1,什么是报表自动化? Q2,​什么样的内容适合进行报表自动化? Q3,​如何实现报表自动化? 第一个问题,什么是报表自动化呢?之前算 ...

  4. python手写均值滤波器_python手写均值滤波

    本文实例为大家分享了python手写均值滤波的具体代码,供大家参考,具体内容如下 原理与卷积类似,设置一个n*n的滤波模板,滤波模板内的值累加除以模板的尺寸大小取平均为滤波后的值. 代码如下: imp ...

  5. python绕过付费认正_python接口自动化三(登录绕开验证码及发帖)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 但是这里需要明确 ...

  6. python中sign函数图片_python接口自动化-实现sign签名(MD5加密)

    一,前序 今天在学习sign签名的的时候,了解了下常用的sign加密算法,突然心血来潮,想用python试着将签名生成的通用步骤用代码实现出来,虽然中间经历了一点小波折,请教了开发同事后,按照他给的思 ...

  7. python接口自动化接口依赖_Python接口自动化之mock模块简单使用

    mock简介 mock原是python的第三方库,python 2可以直接安装mock模块,但在python 3.3以后mock模块已经整合到了unittest测试框架中,不需要再单独安装. Mock ...

  8. python post 上传文件_python接口自动化7-post文件上传

    前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...

  9. python 接口自动化测试_python接口自动化测试之接口数据依赖

    作者:泰斯特test 链接:https://juejin.im/post/5cc11f6be51d45401f566d14 在做自动化测试时,经常会对一整套业务流程进行一组接口上的测试,这时候接口之间 ...

最新文章

  1. AI创业成功公式:数据×数据+机器学习能力+算法
  2. java实现迷宫算法--转
  3. 关于 移动端 页面跳转的方赞
  4. 三创比赛关于软件设计的策划书_关于大学生创业和电商创业大赛
  5. 2021-10-28 SAP Spartacus SSR 性能方面的一些学习笔记
  6. 安装windows 10操作系统
  7. Android用按钮确定单选框,Android RadioButton单选框的使用方法
  8. putty的窗口关闭相关的可能需要注意的细节
  9. Hibernate标准查询
  10. 【故障分析】基于matlab ICA故障监测【含Matlab源码 1590期】
  11. python 图像压缩 jpeg_smally:批量无损压缩JPG和PNG
  12. vue中打印多一页空白页
  13. Redis 跳跃表的原理和实现
  14. jmeter 导入java,JMeter导入自定义的Jar包的详解教程
  15. 熊大微评微内核|华为“鸿蒙”所涉及的微内核究竟是什么?
  16. c语言中方阵对角线的和程序,c语言程序 1、方阵求出主对角线上元素之和;2、辅对角线上元素之积;3方阵中最大的元素...
  17. java catch 空指针异常_java空指针异常怎么处理
  18. 高通平台ITS:sensor_fusion test_sensor_fusion.py Fail
  19. 【Zotero高效知识管理】(4)Zotero的文献管理、阅读及笔记知识管理
  20. gensimAPI学习——word2vec

热门文章

  1. Vmware下安装CentOS6的特别注意,一定要在虚拟机上电时候按DEL,选择操作系统启动方式...
  2. leetcode 1223 python
  3. 本周五丨数据库智能管控最佳实践与探索
  4. 今晚直播 | Oracle技术加油站:快速处理紧急性能问题的工具与经验
  5. Oracle坏块处理常用SQL
  6. 【感恩,回馈,展望】2018 ACOUG 年会盛大来袭!
  7. 厉害!苏宁通过citus打造分布式数据库抗住DB高负载
  8. 分而治之:Oracle 18c 及 12.2 分区新特性的 N 种优化实践(含PPT)
  9. 教你如何在Spark Scala/Java应用中调用Python脚本
  10. 学棋五年的我输给了昇腾CANN