python接口自动化7-参数关联

news/2024/7/4 0:45:41

前言

我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了

(博客园的登录机制已经变了,不能用账号和密码登录了,换个网站,或者用cookie登录吧)

 

一、删除草稿箱

1.我们前面讲过登录后保存草稿箱,那可以继续接着操作:删除刚才保存的草稿

2.用fiddler抓包,抓到删除帖子的请求,从抓包结果可以看出,传的json参数是postId

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

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

 

二、提取参数

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

2.通过正则提取需要的字符串,这个参数值前面(postid=)和后面(&)字符串都是固定的

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

 

三,传参

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

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

3.接着前面的保存草稿箱操作,就可以删除成功了

 

四、参考代码

(敲黑板!!!由于博客园的登录机制变了,后面所有的登录地方全部用cookie登录)

 # 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', '这里是抓到的')  # 填上面抓包内容
c.set('.Cnblogs.AspNetCore.Cookies','这里是抓到的')  # 填上面抓包内容
c.set('AlwaysCreateItemsAsActive',"True")
c.set('AdminCookieAlwaysExpandAdvanced',"True")
s.cookies.update(c)
print s.cookies

# -----------登录全部走cookie登录---


# 第二步:保存草稿
url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
body = {"__VIEWSTATE": "",
        "__VIEWSTATEGENERATOR":"FE27D343",
        "Editor$Edit$txbTitle":"这是3111",
        "Editor$Edit$EditorBody":"<p>这里111:http://www.cnblogs.com/yoyoketang/</p>",
        "Editor$Edit$Advanced$ckbPublished":"on",
        "Editor$Edit$Advanced$chkDisplayHomePage":"on",
        "Editor$Edit$Advanced$chkComments":"on",
        "Editor$Edit$Advanced$chkMainSyndication":"on",
        "Editor$Edit$Advanced$txbEntryName":"",
        "Editor$Edit$Advanced$txbExcerpt":"",
        "Editor$Edit$Advanced$tbEnryPassword":"",
        "Editor$Edit$lkbDraft":"存为草稿",
         }

r2 = s.post(url2, data=body, verify=False)
# 获取当前url地址
print r2.url

# 第三步:正则提取需要的参数值
import re
postid = re.findall(r"postid=(.+?)&", r2.url)
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()

 对python接口自动化有兴趣的,可以加python接口自动化QQ群:226296743

也可以关注下我的个人公众号:

---------------------------------python接口自动化已出书-------------------------

全书购买地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695


http://www.niftyadmin.cn/n/4073959.html

相关文章

Twitter如何迷住韦尔奇

谁也不知道Twitter是怎么火起来的&#xff0c;威廉姆斯在此之前一直都是默默无闻的人。Twitter全球用户量从去年同期的160万猛增到了3210万&#xff0c;尽管没有营收、没有商业模式&#xff0c;这个成立仅3年、不足50人的小公司的身价可能已经超过了10亿美元。去年&#xff0c;…

Runtime源码 autoreleasepool

前言 在iOS开发中&#xff0c;由于ARC的普遍使用&#xff0c;内存管理的问题好像不那么常见了&#xff0c;但了解Objective-C的内存管理机制依然是非常必要的&#xff0c;今天我们来看看autoreleasepool的一些细节&#xff0c;在ARC时代几乎很少看到autoreleasepool的身影了&am…

ping主机的ip地址,判断以及自动安装sysstat软件包 等脚本

ping主机的ip地址。返回结果vi pinghost.sh#&#xff01;/bin/bashping -c 3 -i 0.2 -W 3 $1 &> /dev/nullif [ $? -eq 0 ]thenecho "Host $1 is up."elseecho "Host $1 is down."fish pinghost.sh ip地址判断分数所在的区间&#xff0c;给出不同的…

GraphQL 进阶: Apollo Client 之 GraphQL Subscription 和 graphql容器

概述 下面是一个视频和一个GIF动画, 感受一下基于Websocket, 通过GraphQL实现的即时聊天应用是个什么鬼. 视频连接: https://v.qq.com/x/page/x0508... GIF动画 graphql() 函数是一个给组件增加数据逻辑(查询, 修改, 删除)的一个高阶函数, 存在于 react-apollo 模块中, 如果要使…

Ktor 1.0发布:JetBrains推出的Kotlin Web框架

以下由Kotlin中文站翻译自JetBrains官方博客&#xff0c;本文由Kotlin中文站授权转载&#xff1a; 在我们开展Kotlin工作时&#xff0c;我们实现了很多特性&#xff0c;以便用于构建符合使用习惯且高效的API。我们始终期待着能有一个将这些特性发挥得淋漓尽致的Web框架。今天&a…

常用Linq操作

常用&#xff1a;https://zhuanlan.zhihu.com/p/141469940 IEnumerable<int> s new List<int>() { 1,2,3,4,5,6,7,9};IEnumerable<int> res s.Where(t > t > 5);int count s.Count(t > t > 5);int sum s.Sum();IEnumerable<int> res1…

数据库中间件 MyCAT 源码分析:【单库单表】插入

2019独角兽企业重金招聘Python工程师标准>>> ???关注**微信公众号&#xff1a;【芋艿的后端小屋】**有福利&#xff1a; RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址您对于源码的疑问每条…

特性类基础

特性类 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; using UnityEngine;[Demo(10,Name "小韩")] public class NewBehaviourScript : MonoBehaviour {// Start is called before the …