python - 使用 Python Requests 库将 Cookie 请求为 JSON,以便格式化为 DataFrame
问题描述
我正在尝试使用 Python 请求使用 POST 请求和 JSON 请求参数从网站检索 cookie。
我正在使用 KNIME,它允许您将响应输出为 DataFrame。当我请求 cookie 并尝试使用以下代码将其作为 DataFrame 输出时:
from pandas import DataFrame
import requests
session = requests.Session()
url = "https://api.danmurphys.com.au/apis/ui/Address/SetFavouriteStore"
payload = {"StoreNo":"1276"}
x = session.post(url, json=payload)
output_table = DataFrame(x.cookies)
,我收到以下错误:
Execute failed: No serializer extension having the id or processing python type "http.cookiejar.Cookie" could be found.
Unsupported column type in column: "0", column type: "<class 'http.cookiejar.Cookie'>".
我知道如果响应是 JSON,DataFrame 输出函数会起作用,所以我尝试了以下代码:
x = session.post(url, json=payload)
res = session.cookies.get_dict()
output_table = DataFrame(res)
但这会产生以下错误:
ValueError: If using all scalar values, you must pass an index
如果有人知道如何为 DataFrame 格式化这些 cookie,或者我应该使用不同的库来请求,请通知我。谢谢。
编辑:使用以下 DataFrame 构造函数:
output_table = DataFrame(data=session.cookies.get_dict(), index=session.cookies.get_dict(), columns=None, dtype=None, copy=False)
解决方案
由于 ValueError 指向使用索引传递所有标量值,因此您可以这样做:
from pandas import DataFrame
import requests
session = requests.Session()
url = "https://api.danmurphys.com.au/apis/ui/Address/SetFavouriteStore"
payload = {"StoreNo":"1276"}
x = session.post(url, json=payload)
res = session.cookies.get_dict()
output_table = DataFrame({'data':res})#pass res as a dictionary value
推荐阅读
- android - 在回收视图应用程序崩溃中同时选择两个项目时,我该如何解决?
- regex - 从 UninstallString 中提取 GUID
- python - 将项目添加到嵌套字典
- android - Flutter 作为 UIModule
- barcode-scanner - 如何添加 onClickListener 打开条码扫描器?
- c# - 获取用于运行进程的命令
- sql-server - 使用 Azure 数据工厂中的复制数据工具指定要复制的表的顺序以尊重外键
- django - 修改基于类的视图以将数据添加到登录用户
- c - 我该如何继续计算这个函数(f3)的时间复杂度?
- javascript - 为 Gatsby 上的 onRouteUpdate 元素添加样式或类