requests接口自动化-动态关联text/html格式
动态关联,前一个接口返回的值为后一个接口请求的参数。
# 动态关联
import requests
def test_cookies():
# 以百度为例
r_baidu=requests.get('https://www.baidu.com/')
print(r_baidu.cookies)

直接获取的cookies,似乎是这个值。这个是Request Cookies

提取text格式内容
以前程无忧为例
- 查看响应返回的数据格式

- 提取url

import requests
import re # 正则表达式库,python自带的库
def test_text():
# 返回响应是text格式,使用正则表达式提取其中的值,以前程无忧为例,前程无忧搜索不需要cookies,不需要headers
url_51='https://search.51job.com/list/030200,000000,0000,00,9,99,%25E8%25BD%25AF%25E4%25BB%25B6%25E6%25B5%258B%25E8%25AF%2595%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='
r_51=requests.get(url=url_51) #前程无忧搜索不需要cookies,不需要headers
r_51.encoding='gb2312' # 设置编码格式,不然会乱码
# print(r_51.text)
# "广州通易科技有限公司" href="https://jobs.51job.com/all/co727220.html">广州通易科技有限公司,把url提取出来
url_ty=re.findall('title="广州通易科技有限公司" href="(.+?)">广州通易科技有限公司',r_51.text)
print(url_ty[0])
# 访问新的url
r_ty=requests.get(url=url_ty[0]) # 提取出来的是列表,所以取第一个
r_ty.encoding='gb2312'
print(r_ty.text)
# requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))
提取json格式内容
12306返回的是json格式


数据格式如下:
{
'httpstatus': 200,
'data': {
'result': [
's4sLFAcknK5jD%2BrgTZBK6e7uBDnnFb3kFf8TEdd4ymHqB9ALpkIhhQAOdBTn6CqjSZtYieC4EdvG%0AK0y2zs41g%2FUx7rGtYSPAGaZeFY4oFT45Yb19QFmPPh3V8KEJ4XFh%2BfHh0enliUyR%2FnpVmUxbFOOt%0AZk%2BH3Q1woKPMd2kmKhbZQ%2BqlPAlQWAg03V33gu0gAdEHi%2FKqZbgLvppiSWaBRuyaW5xG%2BvunJMIi%0AlgHrz0vN6YBEMhaO7Qizh7vJGEHev5Iyxm2vEYFNOeEKdoxccy56RTy4pKkOZIgSoWcAPqaaisJq%0AUf55bNGKi8YIzr6X2QRIkQ%3D%3D|预订|240000Z2010P|Z201|BXP|SEQ|BXP|GZQ|17:54|15:34|21:40|Y|nQ38pzGnOgKwK5MM0XYLESzjyjuRvEUBnpuJ6jrQmT4S5rq1EnMZV%2FAHhARQLS0xMLnYuF3fbGQ%3D|20200627|3|P2|01|09|1|0||16||有|||无||有|无|||||30604010W0|36411|0|1||30426000216138300016407500002110251000001025103000||||||1|'
],
'flag': '1',
'map': {
'BXP': '北京西',
'GZQ': '广州'
}
},
'messages': '',
'status': True
}
import requests
# 以12306为例
def test_json():
url_12306='https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2020-06-27&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=GZQ&purpose_codes=ADULT'
headers={'Cookie': 'JSESSIONID=84073130E457BB033010951BC41B3625; _jc_save_toStation=%u5E7F%u5DDE%2CGZQ; _jc_save_wfdc_flag=dc; BIGipServerotn=1373176074.24610.0000; RAIL_EXPIRATION=1593576175962; RAIL_DEVICEID=PbasnpR7ZB2Xcn9qUnd7wNs2_SVXfMI4i5jkkwMKc9BZi1gUKxv7l2uVortBg0YoV8db3y9eOoQx8m7JX1lO1lKwdkOjAS-b5je341esn7o7ct1GPA1WWVshf_Z4kzUi_Ns6JXJc-yyxBq3GYBurzp4HiFl8P7hR; BIGipServerpassport=937951498.50215.0000; route=c5c62a339e7744272a54643b3be5bf64; _jc_save_fromStation=%u5317%u4EAC%2CBJP; _jc_save_fromDate=2020-06-27; _jc_save_toDate=2020-06-27'}
r_12306=requests.get(url=url_12306,headers=headers)
print(r_12306.json())
print(r_12306.json()['httpstatus'])
print(r_12306.json()['data']['map'])
print(r_12306.json()['data']['map']['BXP'])
origin=r_12306.json()['data']['map']['BXP']
requests接口自动化-动态关联text/html格式的更多相关文章
- python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- python接口自动化 -参数关联(一)
原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...
- requests接口自动化9-共享session和传递cookie
前言: session:用requests.session()创建会话,可以将会话信息传递给其他接口 cookie:用RequestsCookieJar或者cookie字典传递cookie信息 fil ...
- requests接口自动化-pytest框架
pytest框架规则 测试文件以test_开头或者以_test结尾 测试类以Test开头,并且不能带有init方法 测试函数以test_开头 断言使用assert pytest框架运行用例 运行单个文 ...
- python+requests接口自动化完整项目设计源码
前言 有很多小伙伴吵着要完整的项目源码,完整的项目属于公司内部的代码,这个是没法分享的,违反职业道德了,就算别人分享了,也只适用于本公司内部的业务. 所以用例的代码还是得自己去一个个写,我只能分享项目 ...
- python+requests接口自动化完整项目设计源码(一)
原文地址https://www.cnblogs.com/yoyoketang/tag/python接口自动化/ 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址 ...
- requests接口自动化6-Body里json格式数据形式的post请求:json
Body里json格式数据形式的post请求:用json传参 fiddler里请求响应内容: 传递的json数据 [{"stepId":"0","ca ...
- requests接口自动化5-表单参数形式的post请求:data
post请求相对于get请求多一个body部分,body部分常见的数据类型有以下四种(注意是常见的,并不是只有4种) application/x-www-form-urlencoded(表单形式) a ...
- requests接口自动化3-url里带参数的get请求:params
url里带参数的get请求:用params传参 #2.带参数的get请求,把参数写成字典格式,用params传参 para2={"type":"math"} r ...
随机推荐
- MySQL数据类型 储存引擎
存储引擎 日常生活中文件格式有很多种,并且针对不同的文件格式会有对应不同存储方式和处理机制(txt,pdf,word,mp4...) 针对不同的数据应该对应着不同的处理机制来存储 存储引擎就是不同的处 ...
- SQL 练习34
求每门课程的学生人数 SELECT cid,COUNT(cid) 课程人数 from sc GROUP BY cid
- netty系列之:在netty中使用protobuf协议
目录 简介 定义protobuf 定义handler 设置ChannelPipeline 构建client和server端并运行 总结 简介 netty中有很多适配不同协议的编码工具,对于流行的goo ...
- Python实现发送邮件(实现单发/群发邮件验证码)
Python smtplib 教程展示了如何使用 smtplib 模块在 Python 中发送电子邮件. 要发送电子邮件,我们使用 Python 开发服务器,Mailtrap 在线服务和共享的网络托管 ...
- Ubuntu时间有误差,设置系统时间与网络时间同步
转载地址:https://blog.csdn.net/qq_33733970/article/details/78823620
- springboot分页插件的使用
在springboot工程下的pom.xml中添加依赖 <!--分页 pagehelper --> <dependency> <groupId>com.github ...
- 数据结构解析-HashMap
概要 HashMap在JDK1.8之前的实现方式 数组+链表,但是在JDK1.8后对HashMap进行了底层优化,改为了由 数组+链表+红黑树实现,主要的目的是提高查找效率. 如图所示: JDK版本 ...
- 【转】Java 开发必会的 Linux 命令
转自:https://www.cnblogs.com/zhuawang/p/5212809.html 作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(U ...
- Redis Jedis lua脚本
参考:http://redisdoc.com/script/eval.htmlhttps://blog.csdn.net/diudiu2025/article/details/86483043fina ...
- servlet中servletContext的五大作用(二)
1. 获取web的上下文路径 2. 获取全局的参数 3. 作为域对象使用 4. 请求转发 5. 读取web项目的资源文件 package day10.about_serv ...