首页 > 解决方案 > 使用 Python 3 在 RequestsCookieJar 中打印 Cookie 域

问题描述

我正在使用 Python 请求模块并且遇到了一个我似乎无法解决的问题。我对请求比较陌生,但即使使用谷歌搜索/文档我也碰壁了。

我正在尝试从响应我发出的 GET 请求的特定 cookie 中获取链接(或“域”)。我似乎只能打印 cookie,而不是域。解释如下:

代码(见评论):

import pickle
import requests
import time

r = requests.post('https://example.com/AddToCartURL')
print("----------------------------------------")
cookies = r.cookies #prints all cookies
print(r.cookies)
time.sleep(3)

# Code below will now use cookies and do a GET request to checkout URL

r = requests.get("https://example.com/checkout", cookies=cookies)
print("HEADERS")
time.sleep(1)
print(r.headers)
print("---------")
print("Cookie")
print(r.cookies)
print("---------") # THIS IS WHERE MY ISSUE IS :
print(r.cookies['checkout']) # This prints the cookie itself
print(r.cookies['checkout']['domain'])

输出和问题:

所以这是我的问题:

#1 - 当我打印 r.cookies 时,cookieJar cookie 显示如下:

<Cookie checkout=r3jk43nb42knj32--fjnk3jk2jkn2323njk for www.example.com/checkout/url>

当我 print(r.cookies['checkout']) 得到 cookie 时,显然:

r3jk43nb42knj32--fjnk3jk2jkn2323njk

好吧,我在这里尝试做的基本上是从中获取域,我尝试这样做:

打印(r.cookies['checkout']['domain'])

得到回应:

Traceback (most recent call last):
  File "/Users/user/PycharmProjects/project/Main.py", line 29, in <module>
    print(r.cookies['checkout']['domain'])
TypeError: string indices must be integers

您可以通过快速的谷歌搜索找到。文档方面我无法找到明确的答案,可能是因为我仍然不擅长搜索。我尝试了使用整数的明显方法,假设它们正在引用索引。但是,这会打印 cookie 本身的单个字符。

具体来说,我要打印的是上面cookie中的example.com/checkout/url。我正在尝试与它交互以通过结帐过程继续我的代码。

这是完整 cookie jar 的示例:(由 print(r.cookies) 调用)

        <RequestsCookieJar[<Cookie random_other_cookie= 3j32fj302fj023jfi for example.com/checkoutURL>, <Cookie checkout=r3jk43nb42knj32--fjnk3jk2jkn2323njk for example.com/checkoutURL>]>

--------------------------------

#2 - 我是否以错误的方式处理这个问题?

更多背景信息,上面的 GET 请求给出了 301 的响应。永久移动。我 99% 确定我最终到达的 URL(至少,前端明智)是我需要的 URL/与上面的 cookie 中的 URL 相同的 URL。

我的问题是我不应该尝试从 cookie 中获取域,而是以某种方式尝试获取重定向 URL?

(也就是请求结束的 URL,而不是原始 URL https://example.com/checkout

----------------------------------

我希望我能很好地概述我的问题。这是我在潜伏数月寻求答案后在 StackOverflow 上的第一篇文章。

谢谢你。

标签: pythoncookiespython-requestspickle

解决方案


推荐阅读