繁体   English   中英

如何循环访问 API 密钥以在最终数据帧的不同行中获取它们的输出?

[英]How do I loop through API keys to get output for them in separate rows in my final dataframe?

我是 python 的新手,正在尝试循环数据:

我正在使用 sendgrid api 全局统计端点,我成功地获得了一个 API 密钥的输出。

我的代码:

import pandas as pd
import json
from pandas.io.json import json_normalize
from datetime import date
today = date.today().strftime('%Y-%m-%d')
import http.client

conn = http.client.HTTPSConnection("api.sendgrid.com")
payload = "{}"
headers = { 'authorization': "Bearer SG.FO0***" }

conn.request("GET", "/v3/stats?aggregated_by=day&start_date={d}&end_date={d}".format(d=today), payload, headers)

res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

d = data.decode("utf-8")
d = json.loads(d)
d = d[0]['stats'][0]['metrics']

sendgrid = pd.DataFrame([d])
sendgrid.to_csv('sendgrid.csv')

输出:

sendgrid
Out[31]: 
   blocks  bounce_drops  bounces  ...  unique_opens  unsubscribe_drops  unsubscribes
0       7            14        9  ...          1240                  0             0

但是,这是一个 API 密钥的输出。 我在同一个帐户下有几个 API 密钥,并且有不同的数据与它们相关联,按品牌排序:

#marketing = SG.UdhzjmjYRC***
#operational = SG.FO0b2Oz***
#SEOmarketing = SG._dnhFlnrSL**
#FFTP = SG.4duN1bHiT9G1**
#PPI_operational = SG.F3zH**

我想为每个品牌(营销、SEO 营销等)遍历每个 API 密钥,这样我就可以通过同一个应用程序为所有这些 API 密钥提取上述输出,而不是创建多个应用程序。 我的目标是使最终数据框如下所示:

Brand              blocks  bounce_drops  bounces  ...  unique_opens  unsubscribe_drops  unsubscribes
marketing           7            14        9  ...          1240                  0             0
operational         8            12        7               2000                 0              0
SEO                 15           10        8               3333                 1              0

我应该在我的代码中更改或添加什么?

似乎您只需要使用键(部门名称)和值(API 键)创建一个dict ,然后循环执行大部分工作的部分。

提示:就在您设置 Bearer 令牌之前和接收数据之后。 然后,您会将结果连接到同一个数据框中。

import pandas as pd
import json
from pandas.io.json import json_normalize
from datetime import date
today = date.today().strftime('%Y-%m-%d')
import http.client

conn = http.client.HTTPSConnection("api.sendgrid.com")
payload = "{}"

keys = {
    "marketing" : "SG.UdhzjmjYRC***",
    "operational": "SG.FO0b2Oz***",
    "SEOmarketing": "SG._dnhFlnrSL**",
    "FFTP": "SG.4duN1bHiT9G1**",
    "PPI_operational": "SG.F3zH**"
}
df = []  # Create new Dataframe

for name, value in keys.items():
    headers = { 'authorization': "Bearer " + value }

    conn.request("GET", "/v3/stats?aggregated_by=day&start_date={d}&end_date={d}".format(d=today), payload, headers)

    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))

    d = json.loads(data.decode("utf-8"))
    row = d[0]['stats'][0]['metrics']
    # Add Brand to data row here with 'name'
    df.append(row)  # Load data row into df

sendgrid = pd.DataFrame(df)
sendgrid.to_csv('sendgrid.csv')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM