python - 使用 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 上的第一篇文章。
谢谢你。
解决方案
推荐阅读
- angular - Angular Router - 限制对路由的直接访问。只能从应用内路由访问
- amazon-web-services - 如何查看长时间运行的 AWS Step Function 失败的原因
- microsoft-graph-api - 无法使用 microsoft graph api 将第一条评论发送到 planner 任务。图表浏览器说成功,但未发表评论
- reactjs - 如何将数据从组件传递到另一个组件
- bash - 如何在linux bash上为`read -p`命名并将用户输入存储在变量中
- javascript - javascript(打字稿)类中的静态常量
- c - 从函数返回的字符串包含垃圾
- db2 - 是否可以为 DB2 创建用户定义的聚合函数而没有上传编译文件的权限..?
- xcode - 由于 info.plist 错误而无法提取:“无法读取数据,因为它的格式不正确。” 在 Xcode 10.3 中
- amazon-dynamodb - 在现有 dynamodb 表中填充新添加的列