как преобразовать запросы.модели.Ответ(obj) во что-то полезное, например, в список, а затем во фрейм данных?

#dataframe #python-requests #request #response

Вопрос:

Я сделал царапину на веб-сайте с помощью почтальона. И после, в той же программе, я использовал инструмент для генерации кода фрагмента, чтобы я мог использовать его в jupyterNote.

код:

 import requests

url = "https://www.tennet.eu/electricity-market/transparency-pages/transparency-germany/reporting-market-relevance/feed-in-management-according-to-par-14/information-on-feed-in-management-levels/?tx_tennetcw_transparency[action]=csvDownloadamp;tx_tennetcw_transparency[controller]=Transparencyamp;cHash=d3d32d8a6d86f1121d287aa727ff5110"

payload='tx_tennetcw_transparency[__referrer][@extension]=TennetCwamp;tx_tennetcw_transparency[__referrer][@vendor]=Arvatoamp;tx_tennetcw_transparency[__referrer][@controller]=Transparencyamp;tx_tennetcw_transparency[__referrer][@action]=listamp;tx_tennetcw_transparency[__referrer][arguments]=YTowOnt96b882eafe83827345698c053f8021fe553f44326amp;tx_tennetcw_transparency[__referrer][@request]=a:4:{s:10:"@extension";s:8:"TennetCw";s:11:"@controller";s:12:"Transparency";s:7:"@action";s:4:"list";s:7:"@vendor";s:6:"Arvato";}8f91dd11199b4d706eaa7939dfa04d22d7122893amp;tx_tennetcw_transparency[__trustedProperties]=a:5:{s:7:"current";i:1;s:3:"uid";i:1;s:5:"sDate";i:1;s:5:"eDate";i:1;s:5:"email";i:1;}172537dd2ccfc75d9cd1f075558d525c95ff58e2amp;tx_tennetcw_transparency[current]=FeedInManagementActivitiesamp;tx_tennetcw_transparency[uid]=55594amp;tx_tennetcw_transparency[sDate]=2021-08-01 00:00amp;tx_tennetcw_transparency[eDate]=2021-08-24 23:59amp;type=7788'

headers = {
  'Content-Type': 'application/x-www-form-urlencoded'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
 

На выходе получается:

 "Action ID";"feed-in source";"level [%]";Start;"Time of publication"

TOG2021-0126;"Veja Mate AC105";100,0;"2021-08-13 20:11";"2021-08-13 20:20"

TOG2021-0126;"Veja Mate AC105";85,2;"2021-08-13 19:52";"2021-08-13 19:54"

TOG2021-0126;"Veja Mate AC105";75,7;"2021-08-13 16:14";"2021-08-13 16:22"

TOG2021-0126;"Veja Mate AC104";100,0;"2021-08-13 20:11";"2021-08-13 20:20"

TOG2021-0126;"Veja Mate AC104";79,8;"2021-08-13 19:52";"2021-08-13 19:54"

TOG2021-0126;"Veja Mate AC104";71;"2021-08-13 16:14";"2021-08-13 16:22"
 

Что я пробовал:

  1. чтобы проанализировать ответ в объект JSON.
  2. для приведения в строку или список строк.

Для меня это выглядит как таблица excel в word.

Я хочу, чтобы у меня были заголовки 5 столбцов вместе с последовательными строками для каждого идентификатора действия. Затем я, наконец, смогу поместить его в фрейм данных.

Заранее благодарю вас и приношу извинения за любую чушь

Ответ №1:

Вы можете использовать io.StringIO pd.read_csv для считывания ответа в фрейм данных panda:

 import requests
import pandas as pd
from io import StringIO


url = "https://www.tennet.eu/electricity-market/transparency-pages/transparency-germany/reporting-market-relevance/feed-in-management-according-to-par-14/information-on-feed-in-management-levels/?tx_tennetcw_transparency[action]=csvDownloadamp;tx_tennetcw_transparency[controller]=Transparencyamp;cHash=d3d32d8a6d86f1121d287aa727ff5110"
payload = "tx_tennetcw_transparency[__referrer][@extension]=TennetCwamp;tx_tennetcw_transparency[__referrer][@vendor]=Arvatoamp;tx_tennetcw_transparency[__referrer][@controller]=Transparencyamp;tx_tennetcw_transparency[__referrer][@action]=listamp;tx_tennetcw_transparency[__referrer][arguments]=YTowOnt96b882eafe83827345698c053f8021fe553f44326amp;tx_tennetcw_transparency[__referrer][@request]=a:4:{s:10:"@extension";s:8:"TennetCw";s:11:"@controller";s:12:"Transparency";s:7:"@action";s:4:"list";s:7:"@vendor";s:6:"Arvato";}8f91dd11199b4d706eaa7939dfa04d22d7122893amp;tx_tennetcw_transparency[__trustedProperties]=a:5:{s:7:"current";i:1;s:3:"uid";i:1;s:5:"sDate";i:1;s:5:"eDate";i:1;s:5:"email";i:1;}172537dd2ccfc75d9cd1f075558d525c95ff58e2amp;tx_tennetcw_transparency[current]=FeedInManagementActivitiesamp;tx_tennetcw_transparency[uid]=55594amp;tx_tennetcw_transparency[sDate]=2021-08-01 00:00amp;tx_tennetcw_transparency[eDate]=2021-08-24 23:59amp;type=7788"
headers = {"Content-Type": "application/x-www-form-urlencoded"}
response = requests.request("POST", url, headers=headers, data=payload)

df = pd.read_csv(StringIO(response.text), sep=";")
print(df)
 

С принтами:

         Action ID            feed-in source level [%]             Start Time of publication
0    TOG2021-0126           Veja Mate AC105     100,0  2021-08-13 20:11    2021-08-13 20:20
1    TOG2021-0126           Veja Mate AC105      85,2  2021-08-13 19:52    2021-08-13 19:54
2    TOG2021-0126           Veja Mate AC105      75,7  2021-08-13 16:14    2021-08-13 16:22
3    TOG2021-0126           Veja Mate AC104     100,0  2021-08-13 20:11    2021-08-13 20:20
4    TOG2021-0126           Veja Mate AC104      79,8  2021-08-13 19:52    2021-08-13 19:54

...and so on.