当想利用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用法相关推荐

  1. Python学习:dict字典的用法

    1.Python中的字典特点: 速度快,内部使用二分查找的方式 可以用来存储大量的关系型数据 字典是无序的 2.字典的定义方式: dic = dict(name ="zhangsan&quo ...

  2. Python学习笔记——输入与输出用法

    目录 1.输入input 2.输出print 1.输入input python里面的输入函数是input(),可以接收一个从键盘输入的内容,回车结束. python3版本的input可以接收任意的数据 ...

  3. python 学习日记 —— dict 字典的用法

    什么是字典 什么是字典? 字典是 python 中的一个键(key)值(value)映射的数据结构: 字典是无序的: 字典是可变对象: 字典的 key 必须是唯一的: 字典的定义: 字典通过花括号中用 ...

  4. Python学习笔记 Matplotlib.colors.Normalize用法及代碼示例

    Matplotlib是Python中令人驚歎的可視化庫,用於數組的二維圖. Matplotlib是一個基於NumPy數組的多平台數據可視化庫,旨在與更廣泛的SciPy堆棧配合使用. matplotli ...

  5. python学习笔记之常用模块用法分析

    内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 repr(obj) 得 ...

  6. Python学习——作图plt.cm.Set()用法

    前言 最近需要实现数据可视化,进而了解了一下Python作图的一些小技巧,在这里记录一下,以备不时之需~~ 颜色信息 我们在绘制图像时,为了区分不同的点,往往会希望在图像上将不同的点用不同的颜色显示出 ...

  7. Python学习:print函数的用法

    1. 输出字符串 >>> strHello = 'Hello World' >>> print (strHello)Hello World 2. 格式化输出整数 支 ...

  8. Python学习之numpy生成矩阵基础用法

    1.numpy.array() 可以把列表转换为矩阵 numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndm ...

  9. python里while的用法_Python学习笔记之While循环用法分析

    本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...

  10. python中while的用法_Python学习笔记之While循环用法分析

    本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...

最新文章

  1. java http客户端_java 11 标准Java异步HTTP客户端
  2. 计蒜客/51Nod题目
  3. gethostbyname()函数:通过域名获取IP地址
  4. 安卓机更新系统会卡吗_【ios13更新】最全的ios13系统的攻略,最大一次更新,升级绝对不会后悔吗?来看看...
  5. [剑指offer][JAVA]面试题第[27]题[二叉树的镜像][递归][栈]
  6. 关于Remoting(续)
  7. 21天Jenkins打卡Day14-maven服务
  8. 火牛单片机rtc时钟配置_怎么用STM32F103RTC进行时钟的配置
  9. 【MapReduce】编程指导思想
  10. 深度学习2.0-18.随机梯度下降之手写数字问题实战(层)
  11. leetcode 189. 旋转数组(Rotate Array)
  12. 新兴IT企业特斯拉(五)——中国救命
  13. java 发送支持超链接的邮件
  14. Android Json解析工具类
  15. 实用目标检测典范PP-YOLOv2 来了!性能超越YOLOv5,推理耗时不变
  16. canoco5主成分分析步骤_主成分分析(PCA)统计与MATLAB函数实现
  17. IIS7 +vs2010部署项目后验证码显示为红叉问题
  18. 蔡康永的说话之道2-笔记
  19. H3C交换机远程端口镜像配置
  20. 小豆社保「社保代缴」短信接口被盗刷解决方案-企业短信防火墙

热门文章

  1. 罗技跨屏互联FLOW软件问题,无法启动
  2. 《伯克毕生发展心理学1》
  3. css实现图片水平居中对齐
  4. Markdown 简历模版, typroa 一键简历生成
  5. Linux百度车牌识别api,PC端车牌识别SDK
  6. 【React】第八部分 react脚手架安装以及react脚手架配置代理
  7. 学生宿舍管理系统需求分析
  8. python测试工程师简历模板_自动化测试工程师简历专业技能怎么写
  9. Bat脚本学习之 常用测试脚本
  10. cad调了比例因子没反应_10个常见cad问题的解决方法!学会了这几招不再求人