【问题标题】:Using Python Requests library to request Cookie as JSON in order to format as DataFrame使用 Python Requests 库将 Cookie 请求为 JSON,以便格式化为 DataFrame
【发布时间】:2020-09-27 13:22:24
【问题描述】:

我正在尝试使用 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)

成功输出了格式化为 DataFrame 的 cookie,但是这些值会跨行和列复制,如屏幕截图所示。

【问题讨论】:

  • 你能解释一下把这条线放在哪里吗?我似乎无法让它工作
  • 尝试将其传递给DataFrame构造函数。它将返回字典名称/值。
  • 好吧,这在一定程度上有效,以下构造函数:output_table = DataFrame(data=session.cookies.get_dict(), index=session.cookies.get_dict(), columns=None, dtype=None, copy=False),但会产生重复值 - 我将在我的问题中发布一个屏幕截图来演示。

标签: python dataframe cookies python-requests http-post


【解决方案1】:

由于 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

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    相关资源
    最近更新 更多