Python学习之cookies及session用法

2023-11-19

当想利用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
    #获取会话下的cookies

except 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发起评论请求。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习之cookies及session用法 的相关文章

随机推荐

  • css根据某个角旋转,设置旋转中心点

    前言 css3里面是有动画的属性的 里面有个旋转 那么旋转怎么来根据元素的不同点来旋转呢 这里分享下方法 实现源码 1 旋转的代码 transform rotate 7deg 旋转的兼容性写法 ms transform rotate 7de
  • 【Google测试之道】第三章 测试工程师

  • 手残-网络重置后网络适配器全感叹号且各种方法联网失效的问题解决

    前因 回家过年连接无线网的时候 刚开始连不上网络 莫名其秒的就点开了网络设置 然后重置了网络 真是秀逗了 导致痛苦的开始 重启之后 发现电脑的wifi图标没了 更糟糕的是 打开设备管理器发现网络适配器全是感叹号 驱动没了 即使在这里右键更新
  • 《信号与系统》解读 第1章 信号与系统概述-3:基本的1阶时域信号--单位阶跃信号、单位斜变信号、单位冲击信号

    目录 连续信号 1 单位阶跃信号 2 单位斜变信号 自然界衰变规律之一 3 单位冲击信号 离散信号 4 单位阶跃序列 5 单位采样 连续信号 1 单位阶跃信号 1 定义 t gt 0时 信号的幅度恒等于1 t lt 0时 信号的幅度恒等于0
  • Ubuntu 16.04系统中GCC 9.1编译器安装方法及C++17标准测试示例

    严正声明 本文系作者davidhopper原创 未经许可 不得转载 2019年8月2日更新 本文方法适用于GCC 9 1 0 只需将原文中的GCC 7 3 0替换为GCC 9 1 0即可 为什么要更新到GCC 9 1 0 因为该版本可支持C
  • web3无法在浏览器远程调用miner.start()

    原文 https bitshuo com topic 58841835fd9ca2790427eb67 web3无法在浏览器远程调用miner start 首先我在启动私链时已经调用了miner模块 代码如下 geth identity s
  • PyCharm2019.1.1安装(Ubuntu16.04)

    PyCharm2019 1 1安装 Ubuntu16 04 我们已经在Ubuntu里安装了Python 可以在终端使用Python 也可以用文本编辑器编写代码后然后用Python执行代码 但这些都不是很方便 也不是很智能和不够友好 需要有多
  • 利用Python每日将股票数据进行爬取、并做了一波处理分析

    1 先展示 时间 价格 涨跌幅 2 说明 因为在上班的时候 直接打开交易软件的话 太明显 会让别人看到我在炒股 所以 自己写一个 可以随时查看自己持仓的股票涨跌情况 3 代码 import tushare as ts import time
  • 【问题解决】利用Eclipse,在hadoop上传文件到hdfs没有内容

    本文适用于一些在网上找了半天答案都没解决问题的人群 因为我也是在按网上说道弄了一天 最后才解决的 如果你是刚遇到问题 还没有深入 建议你查看这篇文章 http f dataguru cn hadoop 208802 1 1 html 将问题
  • 创业的真谛是顺势而为,借船过海!

    追寻成功的路上 顺势最易 借势稍难 造势境界最高 创业者 或者创业团队 积极争取优惠政策 打造自身适宜环境 努力营造外在氛围 最大化有效使用身边各种资源 懂得聚合放大 顺势是为了 为 顺势而为 最终是为了顺势大为 一 顺势而为 无论商场战场
  • Python opencv学习-13 直方图反向投影(用于图像分割)

    代码和图片大量参考https blog csdn net tengfei461807914 article details 77075567 自己跑了下验证了下 个人理解 直方图反向投影用来做图像分割 或者说知道了一个目标的图片的一部分 去
  • 利用Redis bitmap签到功能

    1 简介 BitMap 存储的是连续的二进制数字 0 和 1 通过 bitmap 只需要一个 bit 位来表示某个元素对应的值或者状态 key 就是对应元素本身 我们知道 8 个 bit 可以组成一个 Byte 所以bitmap 本身会极大
  • 为什么程序员都喜欢安静?

    大家回顾一下上学期间 你在上晚自习想完成今天老师布置的作业 但是你的班级却非常的吵闹 跟置身在菜市场一样 你能专心完成作业吗 不受周围吵闹环境的影响吗 相信大部分的人都难以静下心来认真完成作业 有时候好不容易想到一个思路 结果旁边的人拍你一
  • Windows系统常用命令

    Windows常用命令 1 echo 用法 输出一个字符到终端 当加上 gt 后就可输出到文本文件 例如 echo 1 在终端显示一个1 echo 20 gt gt 1 txt 在当前目录下的1 txt文件后面追加一行数据值20 如果没有1
  • AT24C02芯片使用介绍

    AT24C02简介 AT24C02是一个2K位串行CMOS E2PROM 内部含有256个8位字节 有一个16字节页写缓冲器 该器件通过IIC总线接口进行操作 有专门的写保护功能 应用于AT24C02制造过程的先进CMOS技术实质上减少了器
  • 咬牙切齿的按钮

    先看效果 再看代码 查看更多 import url https fonts googleapis com css2 family Roboto wght 500 display swap root sz 9vmin on 4CAF50 of
  • ftp服务器性能对比,ftp服务器软件 性能对比

    ftp服务器软件 性能对比 内容精选 换一换 Java性能分析是鲲鹏性能分析工具的子工具 本章节以openEuler离线环境安装工具 登录 创建Guardian和分析任务 卸载工具为例 指导您快速上手Java性能优分析 由于root用户拥有
  • 机器学习毕设题目有哪些_毕设开源了,126个star,39个fork

    毕设题目 我是去年毕业的 软件工程专业 学校给的毕设题目是实现一个电影院订票系统 如图 嗯 题目一看很简单 其实就是实现一个web版的影票在线订票系统罢了 因此当天接到毕设后的我就大刀阔斧的准备开干了 技术方案选择 先说个大前提 我们学校评
  • c++动态数组(二)之allocator类

    new在灵活性上面一些局限性 以方便它将内存分配和对象构造组合在了一起 delete将内存释放和对象析构组合在一起 当分配一大块内存时 我们通常计划在这块内存上面按需构造对象 在这种情况下 我们希望内存分配和对象构造分离 这意味着我们可以分
  • Python学习之cookies及session用法

    当想利用Python在网页上发表评论的时候 需要一些账号密码登录的信息 这个时候用requests get 请求的话 账号密码全部会显示在网址上 这显然不科学 这个时候需要用post请求 可以这么理解 get是明文显示 post是非明文显示