Python学习之cookies及session用法
当想利用Python在网页上发表评论的时候,需要一些账号密码登录的信息,这个时候用requests.get()请求的话,账号密码全部会显示在网址上,这显然不科学!这个时候需要用post请求,可以这么理解,get是明文显示,post是非明文显示。
通常,get请求会应用于获取网页数据,比如我们之前学的requests.get()。post请求则应用于向网页提交数据,比如提交表单类型数据(像账号密码就是网页表单的数据)。在post请求里,我们使用data来传递参数,其用法和params非常相像。
当用到post请求时,需要了解两个参数,cookies和session
1.cookies及其用法
当登录一个网站,登录页面会有一个可勾选的选项“记住我”,如果你勾选了,以后你再打开这个网站就会自动登录,这就是cookie在起作用。我们想要发表评论,首先得登录,其次得提取和调用登录的cookies,然后还需要评论的参数,才能发起评论的请求。
提取cookies的方法:调用requests对象的cookies属性获得登录的cookies,并赋值给变量cookies,最后带着cookies去请求发表评论
例:
login_in = requests.post(url,headers=headers,data=data)
#用requests.post发起请求,放入参数:请求登录的网址、请求头和登录参数,然后赋值给login_in。
cookies = login_in.cookies
#提取cookies的方法:调用requests对象(login_in)的cookies属性获得登录的cookies,并赋值给变量cookies。
2.session及其用法
session是会话过程中,服务器用来记录特定用户会话的信息。session和cookies关系密切——cookies中存储着session的编码信息,session中又存储了cookies的信息。
import requests
#引用requests。
session = requests.session()
#用requests.session()创建session对象,相当于创建了一个特定的会话,帮我们自动保持了cookies。
一般格式:
import requests url_1 = 'https://…' headers = {'user-agent':''} data = {} 定义url,headers和data login_in = requests.post(url,headers=headers,data=data) cookies = login_in.cookies 完成登录,获取cookies url_2 = 'https://…' params = {} 定义url和params response = requests.get(url,headers=headers,params=params,cookies=cookies)
示例:
import requests,json
session = requests.session()
#创建会话。
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}
#添加请求头,避免被反爬虫。
try:
#如果能读取到cookies文件,执行以下代码,跳过except的代码,不用登录就能发表评论。cookies_txt = open('cookies.txt', 'r')#以reader读取模式,打开名为cookies.txt的文件。cookies_dict = json.loads(cookies_txt.read())#调用json模块的loads函数,把字符串转成字典。cookies = requests.utils.cookiejar_from_dict(cookies_dict)#把转成字典的cookies再转成cookies本来的格式。cookies = session.cookies#获取会话下的cookiesexcept FileNotFoundError:
#如果读取不到cookies文件,程序报“FileNotFoundError”(找不到文件)的错,则执行以下代码,重新登录获取cookies,再评论。url = ' https://wordpress-edu-3autumn.localprod.forc.work/wp-login.php'#登录的网址。data = {'log': input('请输入你的账号:'),'pwd': input('请输入你的密码:'),'wp-submit': '登录','redirect_to': 'https://wordpress-edu-3autumn.localprod.forc.work/wp-admin/','testcookie': '1'}#登录的参数。session.post(url, headers=headers, data=data)#在会话下,用post发起登录请求。cookies_dict = requests.utils.dict_from_cookiejar(session.cookies)#把cookies转化成字典。cookies_str = json.dumps(cookies_dict)#调用json模块的dump函数,把cookies从字典再转成字符串。f = open('cookies.txt', 'w')#创建名为cookies.txt的文件,以写入模式写入内容f.write(cookies_str)#把已经转成字符串的cookies写入文件f.close()#关闭文件url_1 = 'https://wordpress-edu-3autumn.localprod.forc.work/wp-comments-post.php'
#文章的网址。
data_1 = {
'comment': input('请输入你想评论的内容:'),
'submit': '发表评论',
'comment_post_ID': '7',
'comment_parent': '0'
}
#评论的参数。
session.post(url_1, headers=headers, data=data_1)
#在会话下,用post发起评论请求。
Python学习之cookies及session用法相关推荐
- Python学习:dict字典的用法
1.Python中的字典特点: 速度快,内部使用二分查找的方式 可以用来存储大量的关系型数据 字典是无序的 2.字典的定义方式: dic = dict(name ="zhangsan&quo ...
- Python学习笔记——输入与输出用法
目录 1.输入input 2.输出print 1.输入input python里面的输入函数是input(),可以接收一个从键盘输入的内容,回车结束. python3版本的input可以接收任意的数据 ...
- python 学习日记 —— dict 字典的用法
什么是字典 什么是字典? 字典是 python 中的一个键(key)值(value)映射的数据结构: 字典是无序的: 字典是可变对象: 字典的 key 必须是唯一的: 字典的定义: 字典通过花括号中用 ...
- Python学习笔记 Matplotlib.colors.Normalize用法及代碼示例
Matplotlib是Python中令人驚歎的可視化庫,用於數組的二維圖. Matplotlib是一個基於NumPy數組的多平台數據可視化庫,旨在與更廣泛的SciPy堆棧配合使用. matplotli ...
- python学习笔记之常用模块用法分析
内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(obj) 得 ...
- Python学习——作图plt.cm.Set()用法
前言 最近需要实现数据可视化,进而了解了一下Python作图的一些小技巧,在这里记录一下,以备不时之需~~ 颜色信息 我们在绘制图像时,为了区分不同的点,往往会希望在图像上将不同的点用不同的颜色显示出 ...
- Python学习:print函数的用法
1. 输出字符串 >>> strHello = 'Hello World' >>> print (strHello)Hello World 2. 格式化输出整数 支 ...
- Python学习之numpy生成矩阵基础用法
1.numpy.array() 可以把列表转换为矩阵 numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndm ...
- python里while的用法_Python学习笔记之While循环用法分析
本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...
- python中while的用法_Python学习笔记之While循环用法分析
本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...
最新文章
- java http客户端_java 11 标准Java异步HTTP客户端
- 计蒜客/51Nod题目
- gethostbyname()函数:通过域名获取IP地址
- 安卓机更新系统会卡吗_【ios13更新】最全的ios13系统的攻略,最大一次更新,升级绝对不会后悔吗?来看看...
- [剑指offer][JAVA]面试题第[27]题[二叉树的镜像][递归][栈]
- 关于Remoting(续)
- 21天Jenkins打卡Day14-maven服务
- 火牛单片机rtc时钟配置_怎么用STM32F103RTC进行时钟的配置
- 【MapReduce】编程指导思想
- 深度学习2.0-18.随机梯度下降之手写数字问题实战(层)
- leetcode 189. 旋转数组(Rotate Array)
- 新兴IT企业特斯拉(五)——中国救命
- java 发送支持超链接的邮件
- Android Json解析工具类
- 实用目标检测典范PP-YOLOv2 来了!性能超越YOLOv5,推理耗时不变
- canoco5主成分分析步骤_主成分分析(PCA)统计与MATLAB函数实现
- IIS7 +vs2010部署项目后验证码显示为红叉问题
- 蔡康永的说话之道2-笔记
- H3C交换机远程端口镜像配置
- 小豆社保「社保代缴」短信接口被盗刷解决方案-企业短信防火墙