前言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
也能够关注下个人我的公众号: