#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"
Что я пробовал:
- чтобы проанализировать ответ в объект JSON.
- для приведения в строку или список строк.
Для меня это выглядит как таблица 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.