python接口自动化关联参数_python接口自动化7-参数关联
前言
我們用自動(dòng)化發(fā)帖之后,要想接著對這篇帖子操作,那就需要用參數(shù)關(guān)聯(lián)了,發(fā)帖之后會有一個(gè)帖子的id,獲取到這個(gè)id,繼續(xù)操作傳這個(gè)帖子id就可以了
(博客園的登錄機(jī)制已經(jīng)變了,不能用賬號和密碼登錄了,換個(gè)網(wǎng)站,或者用cookie登錄吧)
一、刪除草稿箱
1.我們前面講過登錄后保存草稿箱,那可以繼續(xù)接著操作:刪除剛才保存的草稿
2.用fiddler抓包,抓到刪除帖子的請求,從抓包結(jié)果可以看出,傳的json參數(shù)是postId
3.這個(gè)postId哪里來的呢?可以看上個(gè)請求url地址
4.也就是說保存草稿箱成功之后,重定向一個(gè)url地址,里面帶有postId這個(gè)參數(shù)。那接下來我們提取出來就可以了
二、提取參數(shù)
1.我們需要的參數(shù)postId是在保存成功后url地址,這時(shí)候從url地址提出對應(yīng)的參數(shù)值就行了,先獲取保存成功后url
2.通過正則提取需要的字符串,這個(gè)參數(shù)值前面(postid=)和后面(&)字符串都是固定的
3.這里正則提出來的是list類型,取第一個(gè)值就可以是字符串了(注意:每次保存需要修改內(nèi)容,不能重復(fù))
三,傳參
1.刪除草稿箱的json參數(shù)傳上面取到的參數(shù):{"postId": postid[0]}
2.json數(shù)據(jù)類型post里面填json就行,會自動(dòng)轉(zhuǎn)json
3.接著前面的保存草稿箱操作,就可以刪除成功了
四、參考代碼
(敲黑板!!!由于博客園的登錄機(jī)制變了,后面所有的登錄地方全部用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方法其它加個(gè)ser-Agent就可以了
s = requests.session()
r = s.get(url, headers=headers,verify=False)
print s.cookies
# 添加登錄需要的兩個(gè)cookie
c = requests.cookies.RequestsCookieJar()
c.set('.CNBlogsCookie', '這里是抓到的')? # 填上面抓包內(nèi)容
c.set('.Cnblogs.AspNetCore.Cookies','這里是抓到的')? # 填上面抓包內(nèi)容
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":"
這里111:http://www.cnblogs.com/yoyoketang/
","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)
# 獲取當(dāng)前url地址
print r2.url
# 第三步:正則提取需要的參數(shù)值
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接口自動(dòng)化完整版-------------------------
作者:上海-悠悠 QQ交流群:588402570
也可以關(guān)注下我的個(gè)人公眾號:
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python接口自动化关联参数_python接口自动化7-参数关联的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单链表操作实现getelem_c语言实现
- 下一篇: 10怎么设置pg接口_西门子S7300