python接口自動化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接口自動化完整版-------------------------

全書購買地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695


作者:上海-悠悠 QQ交流群:588402570

也可以關注下我的個人公眾號:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM