博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python接口自动化7-参数关联
阅读量:5924 次
发布时间:2019-06-19

本文共 2290 字,大约阅读时间需要 7 分钟。

前言

我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的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接口自动化已出书-------------------------

全书购买地址

你可能感兴趣的文章
光伏答疑解惑part1:安装篇
查看>>
视频应用多元化 以视频为核心的运营服务兴起
查看>>
C#中的 ref 传进出的到底是什么 解惑篇
查看>>
普林斯顿大学:物联网设备安全性堪忧
查看>>
CloudCC CRM观点:SaaS模式CRM产品步入成熟期
查看>>
智能家居渐成趋势 如何正确理解它
查看>>
“三网”竞合升温 智能家居入口泛化
查看>>
全新WiFi技术问世 功率更低穿墙性能更强
查看>>
台积电 2 月份业绩度小月,营收月减 6.8%
查看>>
联想看好印度巴西市场 能弥补中国市场下滑影响
查看>>
《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——第3章 数据安全工具DRBD、extundelete 3.1 数据镜像软件DRBD介绍...
查看>>
最新的黑客大杀器:Google Dorking
查看>>
中国移动再启大规模光缆集采:产业界喜迎大蛋糕
查看>>
竞争抄袭? 如何占领SaaS产品市场
查看>>
世界最大OpenStack私有云是如何运营的
查看>>
全球物联网专利竞争态势分析
查看>>
《网络安全法》为大数据保驾护航
查看>>
微软Edge浏览器开始支持WebVR
查看>>
QDialog之屏蔽Esc键
查看>>
CSS3之创建透明边框三角
查看>>