Requests方法 -- 参数化

原文链接:http://www.cnblogs.com/Teachertao/p/11146824.html

import requests
#禁用安全请求警告
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
"""
1.由于登录时候是多加 2 个 cookie,我们可以先用 get 方法打开登录首页,获取部分 cookie
2.再把登录需要的 cookie 添加到 session 里
3.添加成功后,随便编辑正文和标题保存到草稿箱
"""

def Blog_login(url,s):
    # 先打开登录首页,获取部分 cookie
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
        }

    # s = requests.Session()
    r = s.get(url,headers=header)
    print(r.cookies)

    # 添加登录需要的两个 cookie
    c = requests.cookies.RequestsCookieJar()
    c.set(".Cnblogs.AspNetCore.Cookies","自己抓取的cookie")
    c.set(".CNBlogsCookie","自己抓取的cookie")
    # c.set('AlwaysCreateItemsAsActive',"True")
    # c.set('AdminCookieAlwaysExpandAdvanced',"True")
    s.cookies.update(c)
    print(s.cookies)
    # return s.cookies

def save_box(s,url2,title,body_data):
    # 登录成功后保存编辑内容
    # r1 = s.get("https://i.cnblogs.com/EditPosts.aspx?opt=1", headers=Blog_login(s),verify=False)
    # print(r1.text)

    # 保存草稿箱
    body = {
        "__VIEWSTATE":"",
        "__VIEWSTATEGENERATOR":"FE27D343",
        "Editor$Edit$txbTitle":title,
        "Editor$Edit$EditorBody":body_data,
        "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$txbTag":"",
        "Editor$Edit$Advanced$tbEnryPassword":"",
        "Editor$Edit$lkbDraft":"存为草稿",
    }

    r2 = s.post(url2,data=body,verify=False)
    # print(r.content.decode("utf-8"))
    #获取当前的url地址
    save_url = r2.url
    print(save_url)
    return save_url

def get_postid(u):
    #正则获取需要的postid参数
    import re
    postid = re.findall(r"postid=(.*?)&",u)
    print(postid) #正则提取的值是list
    if len(postid)<1:
        return ""
    else:
        return postid[0]   #提取为字符串

def delete_box(s,url3,postid):
    #删除草稿箱
    form_json = {"postId":postid}
    result = s.post(url3,json=form_json,verify=False)
    print(result.json())

if __name__ == '__main__':
    url = "https://account.cnblogs.com/signin?returnurl=https%3A%2F%2Fwww.cnblogs.com%2F"
    s = requests.Session()
    Blog_login(url,s)
    url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
    u = save_box(s,url2,"Hi,你们","Are you ok?")
    postid = get_postid(u)
    url3 = "https://i.cnblogs.com/post/delete"
    delete_box(s,url3,postid)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值