如何存储类内函数之间使用的 cookie jar?

2024-04-05

我想听听您关于如何有效存储 cookie 的建议,这些 cookie 将在类中由其他函数使用。我当前的代码如下所示:

class SomeClass:
    def __init__(self, username, password):
        self.logged_in      = False
        self.username       = username
        self.password       = password
        opener              = urllib2.build_opener(urllib2.HTTPCookieProcessor())
        urllib2.install_opener(opener)

    def _login(self, username, password):
        if not self.logged_in:
            params = urllib.urlencode({'username': username, 'password': password})
            conn = urllib2.Request('http://somedomain.com/login', params)
            urllib2.urlopen(conn)
            self.logged_in = True

    def _checkLogin(self):
        if not self.logged_in:
            self._login(self.username, self.password)

    def doSomeStuffThatRequireCookies(self):
        self._checkLogin()
        data = urllib2.urlopen(conn).read()
        return data

尽管上面的示例有效,但如果我不想使用 cookie 发出请求,我必须构建自定义 Request(),并且我确信一定有更好、更优雅的方法来执行此操作。

谢谢。


首先,正如 jathanism 所注意到的,您实际上并没有安装 cookie jar。

import cookielib
...

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar())) 

然后, urllib2.install_opener(opener) 将全局安装 opener(!),您不需要这样做。删除 urllib2.install_opener(opener)。

对于非 cookie 请求,请执行以下操作:

您不需要构建 Request 对象,只需使用 url 和 params 调用 urlopen 即可:

params = urllib.urlencode({'username': username, 'password': password})
urllib2.urlopen('http://somedomain.com/login', params)

对于 cookie 请求,请使用 opener 对象:

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

如何存储类内函数之间使用的 cookie jar? 的相关文章

  • 如何(重新)命名 pandas 数据框中的空列标题而不导出到 csv

    我有一个熊猫数据框df1带有一个索引列和一系列未命名的值 我想为未命名的系列指定一个名称 到目前为止 我知道的唯一方法是导出到df1 csv using df1 to csv df1 csv header Signal 然后使用以下命令重新
  • 如果 Excel 文件是由程序创建的,Pandas read_excel 对于具有简单公式的单元格返回 nan [重复]

    这个问题在这里已经有答案了 I use pd read excel读取由以下命令创建的 excel 文件openpyxl并从一个网址下载 解析后的数据框将给出nan如果单元格值是公式 which formula is simply 100
  • Python 转换矩阵

    我有一个如下所示的列表 2 1 3 1 2 3 1 2 2 2 我想要的是一个转换矩阵 它向我显示如下序列 1 后跟 1 的频率是多少 1 后面跟着 2 的频率是多少 1 后跟 3 的频率是多少 2 后跟 1 的频率是多少 2 后跟 2 的
  • 通过 python 中的另外两个修改数组[重复]

    这个问题在这里已经有答案了 假设我们有三个一维数组 A 长度为 5 B 长度相同 示例中为5 C 更长 比如长度为 100 C最初用零填充 A给出索引C应更改的元素 它们可能会重复 以及B给出应添加到初始零的值C 例如 如果A 1 3 3
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • 类型错误:“datetime.datetime”和“str”的实例之间不支持“>”

    我是 python 日期和时间类型的新手 我有一个日期值 date 2018 11 10 10 55 31 00 00 我需要检查该日期值是否超过 90 天 我试过 from datetime import datetime from da
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • 设置高亮大括号的 vim 颜色主题

    如何更改突出显示大括号的 vim 配色方案 我希望实际编辑 vim 主题文件以使更改永久生效 问候 克雷格 匹配括号的自动高亮颜色称为MatchParen 您可以通过执行以下操作来更改 vimrc 中的颜色 highlight MatchP
  • Py2exe - Pmw WindowsError:[错误 3]

    我正在尝试使用 Py2exe 构建独立的可执行文件 我已经导入了 Pmw 类 当我运行独立可执行文件时 出现以下错误 Traceback most recent call last File py line 9 in
  • 在请求中设置端口

    我正在尝试利用cgminer使用 Python 的 API 我对利用requests图书馆 我了解如何做基本的事情requests but cgminer想要更具体一点 我想缩小 import socket import json sock
  • 类型错误:此 COM 对象无法自动执行 makepy 过程 - 请为此对象手动运行 makepy

    这是什么错误 回溯错误 C Users DELL PycharmProjects MyNew venv Scripts python exe C Users DELL PycharmProjects MyNew agaaaaain py T
  • 如何用正则表达式替换多个匹配/组?

    通常我们会编写以下内容来替换一场比赛 namesRegex re compile r is life re I replaced namesRegex sub r butter There is no life in the void pr
  • Seaborn 中没有线性拟合的散点图

    我想知道是否有办法关闭seaborn中的线性拟合lmplot或者是否有一个等效函数可以生成散点图 当然 我也可以使用 matplotlib 但是 我发现 seaborn 中的语法和美学非常吸引人 例如 我想绘制以下情节 import sea
  • 从 wxPython 事件处理程序中调用函数

    我正在努力寻找一种在 wxPython 事件处理函数中使用函数的方法 假设我有一个按钮 单击该按钮时 它会使用事件处理程序运行一个名为 OnRun 的函数 但是 用户忘记单击 OnRun 按钮之前的 RadionButton 我想弹出一个
  • 从迭代器外部将 StopIteration 发送到 for 循环

    有几种方法可以打破一些嵌套循环 他们是 1 使用中断 继续 for x in xrange 10 for y in xrange 10 print x y if x y gt 50 break else continue only exec
  • Python 2.7 缩进错误[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题是由拼写错误或无法再重现的问题引起的 虽然类似的问题可能是on topic help on topic在这里 这个问题的解决方式不
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 无需访问 Internet 即可部署 Django 的简单方法?

    我拥有的是使用 Django 开发的 Intranet 站点的开发版本以及放置在 virtualenv 中的一些外部库 它运行良好 我可以在任何具有互联网连接的计算机上使用相同的参数 使用 pip 轻松设置 virtualenv 但是 不幸
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File

随机推荐

  • PHP SQL数据库查询错误信息

    这段SQL代码有什么问题吗 我从教程中得到它 但它返回以下错误消息 数据库查询失败 您有一个 SQL 语法错误 检查 与您的 MySQL 对应的手册 服务器版本的正确语法 在第 1 行 LIMIT 1 附近使用 function get s
  • 使用 python 将 tsv 文件转换为 xls/xlsx

    我想将 tsv 格式的文件转换为 xls xlsx 我尝试使用 os rename sample tsv sample xlsx 但转换后的文件已损坏 还有其他方法吗 这是一个使用 TSV 转换为 XLSX 的简单示例XlsxWriter
  • Android - 使用应用程序上下文创建 WebView 后如何将其附加到 Activity

    我正在使用应用程序上下文在后台创建一个 Android WebView 以便在我需要显示它时加载并准备好它 当需要时 我使用 addView 将其附加到我的 Activity 中 这通常工作得很好 但是当我尝试打开 HTML 选择下拉列表时
  • 将文本输入滑动窗口并进行计数

    我有这样的文件 超过 1 个缺少行 20 14370 rs6054257 G A 29 PASS NS 3 DP 14 AF 0 5 DB H2 GT GQ DP HQ 0 0 48 1 51 51 20 17330 T A 3 q10 N
  • 通过点击表格行触发jquery

    我喜欢在表格中有一行使其可点击 而不仅仅是行中的文本 因此我使用以下代码使其打开另一个页面 td 但是现在我使用 jquery 和下面的代码在 div 中而不是在新页面中打开新页面 我将如何更新我的行代码以打开 div 中的内容而不是在新页
  • mod_rewrite 用名称替换 ID

    我的网站上有一个动态显示内容的页面 网址结构是mywebsite com giveaway giveaway php id any number 我希望将该动态 URL 更改为静态 友好 URLmywebsite com giveaway
  • PageNumberPagination 和没有固定顺序的查询集

    根据文档 http www django rest framework org api guide pagination pagenumberpagination 当使用继承自的类时 无需任何特殊即可启用分页GenericAPIView 我
  • 使用 ajax 发布时的 net::ERR_EMPTY_RESPONSE

    你好 我正在尝试逐个上传 xlsx 文件 以便我可以显示状态栏 问题是 我使用 for 循环和 while 循环通过 ajax 发送请求来做到这一点 但是当位于第 40 个元素时 它会停止并且控制台显示 POST site php net
  • Android:当片段更改时如何重新创建操作栏

    我有一个活动显示一些片段 Activity 视图仅包含使用自定义 FragmentPagerAdapter 初始化的 ViewPager 该适配器提供 3 个片段之间的导航 除了操作栏之外 一切似乎都工作正常 我在片段中重写 onCreat
  • Chrome 扩展:每个选项卡的存储空间

    我想将扩展的状态存储在单个文件中而不是存储在单个文件中chrome storage但每个选项卡 扩展是关于在任何页面上制作网格系统覆盖 并希望存储每个选项卡的最新更新 这里是一些代码 popup js function let gridTo
  • Android 中触摸时可以模糊部分图像吗?

    我想模糊图像视图上的特定区域 例如 我想允许用户在android中绘制类似于裁剪的矩形 一旦用户在图像上绘制该矩形 矩形内的区域将变得模糊 或手指触摸 我搜索了很多 但大多数示例都解释了如何模糊完整图像 找不到任何解释如何仅模糊某些部分的教
  • php preg_grep 和元音变音/重音

    我有一个由术语组成的数组 其中一些包含重音字符 我像这样做了 preg grep data array Napol on Caf result preg grep input i data 因此 如果用户输入 le 我还希望结果 Napol
  • Visual Studio打开文件问题

    是否可以在 Visual Studio 2008 中打开项目 而不打开上次打开项目时先前打开的所有文件 我习惯在处理许多文件时保持打开状态 因此下次我打开项目时 它 非常缓慢 将一堆文件加载到编辑器中 我什至可能不需要打开它们 我已经搜索了
  • 如何减少 UNIX telnet 连接超时

    我有一个 unix shell 脚本 用于测试文件中列出的多个主机的 ftp 端口 for i in cat ftp hosts txt do echo QUIT telnet i 21 done 一般来说 这个脚本可以工作 但是如果我遇到
  • C++ 从 0:n-1 (n > k) 范围内随机采样 k 个数字,无需放回

    我正在致力于将 MATLAB 模拟移植到 C 中 为此 我尝试复制 MATLABrandsample 函数 http www mathworks com help stats randsample html 我还没有找到有效的方法来做到这一
  • 当键具有无效名称时的 TypedDict

    如果我的字典中有一个带有无效标识符的键 例如A 2 我怎样才能创建一个TypedDict与这个领域 E g from typing import TypedDict class RandomAlphabet TypedDict A 2 st
  • PHP 文件是否有可能在执行时删除自身?

    我有一个 PHP 文件 安装 php 它处理其他脚本的安装 我希望该文件在运行后删除自身及其包含的文件夹 这可能吗 假设该文件夹仅包含 install php 的演示 mkdir demo cd demo echo
  • GetSystemMetrics 和 TScreen 返回错误值

    我使用的是德尔福XE5 我认为我的笔记本电脑有问题 一段时间后 它向 Screen Width 和 GetSystemMetrics SM CXSCREEN 返回错误的值 高度相同 我的操作系统是 Windows 7 64 位 我的笔记本电
  • 以编程方式将证书安装到 Mozilla 中

    有没有办法以编程方式将证书安装到 mozilla 中 我们正在尝试编写所有内容的脚本来消除环境偏差 因此通过 mozilla 首选项手动安装它无法满足我们的需求 我认为有一种方法可以使用 certutil 来做到这一点 但我不确定 Mozi
  • 如何存储类内函数之间使用的 cookie jar?

    我想听听您关于如何有效存储 cookie 的建议 这些 cookie 将在类中由其他函数使用 我当前的代码如下所示 class SomeClass def init self username password self logged in