引入我们要使用的包
# _*_ coding:utf-8 _*_ # coding = utf-8 import json import requests.utils #改变输出端口 import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')
接下来代码中开头没有封装成函数的都是全局变量,当然你也可以使用python中的类来进行修改,
下面的代码是使用session来进行登录并获取cookie
#下面没有封装成函数的都是全局变量 headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67" } session = requests.session() def pre_kkb_login(): """ 这个函数是拿到登录时的网站并且拿取到cookie, 方便我们在后面进行登录 :return: """ pre_login_url = "https://xiaoke.kaikeba.com/example/wordpress/wp-login.php" from_data = { "log": "****", # 登录账号 "pwd": "*****", # 登录密码 "wp-submit": "登录", "testcookie": "1", } pre_login_in_re = session.post(url=pre_login_url, headers=headers, data=from_data) cookie = pre_login_in_re.cookies print(cookie) return cookie
我们使用将得到的cookie进行保存,在评论时我们使用已经保存的cookie来进行登录并评论
def save_cookie(): """ 这个函数是用来保存cookie的 方便我们接下来使用保存的cookie来进行登录 :return: """ file_cookie = pre_kkb_login() #将cookie转化为字典 cookie_dict = requests.utils.dict_from_cookiejar(file_cookie) #将cookie字典转化字符串存储 cookie_str = json.dumps(cookie_dict) with open("file_cookie.txt", "w", newline="") as f: f.write(cookie_str) def read_cookie(): """ 怎么读取我们已经保存的cookie """ file_cookie = open("file_cookie.txt", "r") #调用json模块中的loads函数, 把字符串转化为字典 cookie_dict = json.loads(file_cookie.read()) #将字典转化为cookie原本的格式 cookie = requests.utils.dict_from_cookiejar(cookie_dict) session.cookies = cookie return session.cookies def commnet(): """ 使用我们读取的cookie进行评论 但是这里我们是从已保存的cookie中读取cookie :return: """ try: cookie = save_cookie() comment_url = "https://xiaoke.kaikeba.com/example/wordpress/wp-comments-post.php" comment_data = { 'comment': "恭喜你,成功了", 'submit': '发表评论', 'comment_post_ID': '35', 'comment_parent': '0' } comment_login = session.post(url=comment_url, headers= headers, data=comment_data, cookies=cookie) # print(comment_login.status_code) except: print("error") return 0 if __name__ == '__main__': save_cookie() commnet()
部分代码来源与开课吧!如有错误,还望各位大佬指正。谢谢