前言python
咱們用自動化發帖以後,要想接着對這篇帖子操做,那就須要用參數關聯了,發帖以後會有一個帖子的id,獲取到這個id,繼續操做傳這個帖子id就能夠了json
(博客園的登陸機制已經變了,不能用帳號和密碼登陸了,換個網站,或者用cookie登陸吧)cookie
1、刪除草稿箱session
1.咱們前面講過登陸後保存草稿箱,那能夠繼續接着操做:刪除剛纔保存的草稿post
2.用fiddler抓包,抓到刪除帖子的請求,從抓包結果能夠看出,傳的json參數是postId網站
3.這個postId哪裏來的呢?能夠看上個請求url地址url
4.也就是說保存草稿箱成功以後,重定向一個url地址,裏面帶有postId這個參數。那接下來咱們提取出來就能夠了spa
2、提取參數blog
1.咱們須要的參數postId是在保存成功後url地址,這時候從url地址提出對應的參數值就好了,先獲取保存成功後url接口
2.經過正則提取須要的字符串,這個參數值前面(postid=)和後面(&)字符串都是固定的
3.這裏正則提出來的是list類型,取第一個值就能夠是字符串了(注意:每次保存須要修改內容,不能重複)
三,傳參
1.刪除草稿箱的json參數傳上面取到的參數:{"postId": postid[0]}
2.json數據類型post裏面填json就行,會自動轉json
3.接着前面的保存草稿箱操做,就能夠刪除成功了
4、參考代碼
(敲黑板!!!因爲博客園的登陸機制變了,後面全部的登陸地方所有用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
也能夠關注下個人我的公衆號: