简介

大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础。因此再在沙场实例演练一下博客园的相关接口。我们用自动化发随笔之后,要想接着对这篇随笔操作,不用说就需

要用参数关联了,发随笔之后会有一个随笔的 id,获取到这个 id,继续操作传这个随笔 id 就可以了(博客园的登录机制已经变了,不能用账号和密码登录了,这里用 cookie 登录)

大致流程步骤:web界面操作登录抓包查看cookie—>代码模拟cookie登录—>web界面操作新建随笔和保存随笔—>抓包查看新建随笔和保存随笔的url和参数等—>代码模拟新建随笔并保存编辑内容—>web界面操作删除随笔—>抓取删除操作请求—>提取参数—>传参—>代码实现。

一、删除随笔

1、我们前面讲过登录后新建随笔和保存随笔后,不记得可以点击传送门那可以继续接着操作:删除刚才新建的随笔

2、用fiddler抓包,抓到删除新建随笔的请求,从抓包结果可以看出,传的json参数是postId

3.这个postId哪里来的呢?可以看上个请求的url地址

4、也就是说保存草稿箱成功之后,重定向一个 url 地址,里面带有 postId 这个参数。那我们想办法将这个参数提取出来就可以了

二、提取参数

1、我们需要的参数 postId 是在保存成功后 url 地址,这时候从 url 地址提出对应的参数值就行了,先获取保存成功后 url

2、通过正则表达式从保存的url提取需要的字符串,这个参数值前面(postid=)和后面(&)字符串都是固定的

3、这里正则提出来的是 list 类型,取第一个值就可以是字符串了(注意:每次保存需要修改内容,不能重复)

三、传参

1、删除草稿箱的 json 参数传上面取到的参数:{"postId": postid[0]}

2、json 数据类型 post 里面填 json 就行,会自动转 json

3、接着前面的保存随笔的操作,就可以删除成功了

注意:同理和jenkins一样,如果想看清楚,可以在删除新建随笔出打断点,看到新建的随笔后,再次执行下边的代码 看看是不是可以删掉新建随笔

四、参考代码

# coding:utf-8

import requests

# 先打开登录首页,获取部分cookie

url = "https://passport.cnblogs.com/user/signin"

headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"

} # get方法其它加个ser-Agent就可以了

s = requests.session()

r = s.get(url, headers=headers,verify=False)

print (s.cookies)

# 添加登录需要的两个cookie

c = requests.cookies.RequestsCookieJar()

c.set('.CNBlogsCookie', 'XXX') # 填上面抓包内容

c.set('.Cnblogs.AspNetCore.Cookies','XXX') # 填上面抓包内容

c.set('AlwaysCreateItemsAsActive',"True")

c.set('AdminCookieAlwaysExpandAdvanced',"True")

s.cookies.update(c)

print (s.cookies)

# 登录成功后保存编辑内容

url2= "https://i.cnblogs.com/EditPosts.aspx?opt=1"

body = {"__VIEWSTATE": "",

"__VIEWSTATEGENERATOR":"FE27D343",

"Editor$Edit$txbTitle":"这是绕过登录的标题:北京-宏哥",

"Editor$Edit$EditorBody":"

这里是中文内容:http://www.cnblogs.com/duhong/

",

"Editor$Edit$Advanced$ckbPublished":"on",

"Editor$Edit$Advanced$chkDisplayHomePage":"on",

"Editor$Edit$Advanced$chkComments":"on",

"Editor$Edit$Advanced$chkMainSyndication":"on",

"Editor$Edit$lkbDraft":"存为草稿",

}

r2 = s.post(url2, data=body, verify=False)

#print (r.content.decode('utf-8'))

# 第三步:正则提取需要的参数值

import re

postid = re.findall(r"postid=(.+?)&", r2.url)

print(type(postid))

print (postid) # 这里是 list

# 提取为字符串

print (postid[0])

# 第四步:删除草稿箱

url3 = "https://i.cnblogs.com/post/delete"

json3 = {"postId": postid[0]}

r3 = s.post(url3, json=json3, verify=False)

print (r3.json())

五、小结

1、好了,参数关联接口就是这么简单,相信各位小伙伴下回遇到此种类似的问题,不会慌了,应该是十拿九稳的把它KO掉。

2、有兴趣的自己可以向上一篇一样,自己练习一下打断点,自己可以体验一下其中的乐趣和神奇。

以上所述是小编给大家介绍的python接口自动化参数关联接口详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

本文标题: python接口自动化(十六)--参数关联接口后传(详解)

本文地址: http://www.cppcns.com/jiaoben/python/257246.html

python接口自动化代码_python接口自动化(十六)--参数关联接口后传(详解)相关推荐

  1. python在线翻译代码_Python 20行简单实现有道在线翻译的详解

    简介 主要是尝试简单的使用pyhton的爬虫功能,于是使用有道进行尝试,并没有进行深入的诸如相关api的调用. 以下是需要的POST数据 代码 以下是相关部分的代码: import urllib.re ...

  2. python拍七游戏代码_python实现逢七拍腿小游戏的思路详解

    逢七拍腿游戏 几个小朋友在一起玩逢七拍腿的游戏,从1开始数数,当数到7的倍数或者尾号是7时,拍一下腿.现在从1数到99,假设每个人都没有错,计算一下共要拍腿几次? 第一种实现思路:通过在for循环语句 ...

  3. python串口数据分包_python TCP Socket的粘包和分包的处理详解

    概述 在进行TCP Socket开发时,都需要处理数据包粘包和分包的情况.本文详细讲解解决该问题的步骤.使用的语言是Python.实际上解决该问题很简单,在应用层下,定义一个协议:消息头部+消息长度+ ...

  4. python定位相邻节点_Python selenium 父子、兄弟、相邻节点定位方式详解

    今天跟大家分享下selenium中根据父子.兄弟.相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点. ...

  5. python爬取喜马拉雅_Python爬虫实战案例之爬取喜马拉雅音频数据详解

    这篇文章我们来讲一下在网站建设中,Python爬虫实战案例之爬取喜马拉雅音频数据详解.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前言 喜马拉雅是专业的音频分享平台,汇集 ...

  6. python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  7. python定位相邻节点_Python selenium —— 父子、兄弟、相邻节点定位方式详解

    今天跟大家分享下selenium中根据父子.兄弟.相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点. ...

  8. python制作动态时钟_python+pygame制作一个可自定义的动态时钟和详解

    #第1步:导出模块 importsys, random, math, pygamefrom pygame.locals import * from datetime importdatetime, d ...

  9. python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...

    本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...

  10. python高端写法_python高级篇:使用元类方式实现单例模式详解

    对于编程开发的朋友来说,设计模式应该最为熟悉不过了,如果要谈到哪种设计模式最为简单,也最容易理解,首当其冲的"单例模式"应该不为过了.本文主要讲解在python3中如何使用元类实现 ...

最新文章

  1. 家庭扫地机器人竞争升级 带手臂提供移动服务或是未来方向
  2. 组态王串口服务器虚拟串口,串口服务器USR-N520连接组态王设置步骤
  3. dcs 管理计算机的功能,计算机控制系统 第三章 集散控制系统(DCS).doc
  4. delphi学习路线
  5. python集合补集、差集、并集_python set集合运算(交集,并集,差集,对称差集)...
  6. IoT 爆发前夕,企业架构要面对哪些变革
  7. MongoDB的Go语言驱动----mgo的使用指南
  8. 机器学习and深度学习学习资料
  9. php 时间转换时间戳_php时间戳与date格式转换
  10. 远程控制teamviewer|远程桌面teamviewer|远程桌面连接软件teamviewer|teamviewer无人值守
  11. 快速掌握maya软件(基础建模)
  12. docker 安装 mysql ,redis ,nginx,tomcat,rabbitmq,fastdfs,kafka,mongo,elasticsearch
  13. Stream篇(五)
  14. 扑克牌猜数字游戏规则_扑克牌里各个数字代表什么意思
  15. 如何批量检测查询域名或者网址是否被微信屏蔽拦截
  16. mybatis常用(动态)SQL操作样例
  17. 后台弹出提示信息方法
  18. redis内存理解---内存消耗
  19. throttle debounce节流防抖(uniapp)
  20. 宇视科技录像机添加其他厂商摄像机配置步骤

热门文章

  1. 37. 错误与异常处理(1)
  2. 41. Element getElementsByTagName() 方法
  3. [Bzoj2049][Sdoi2008]Cave 洞穴勘测
  4. django应用之corsheaders[跨域设置]
  5. Reinforcement Learning by David Silver 学记记录
  6. 存储过程,是否有查看所有项目功能
  7. javaScript 中的异步编程
  8. 简单解析三种JAVA调用方式-同步,异步,回调
  9. JavaScript遍历DOM
  10. Android 开发工具下载