python - Python keyError: 'stop_time' / Facebook API 运行文件
问题描述
我在运行 Python 文件以从 Facebook API 请求数据时遇到 KeyError:'stop_time'。有人遇到过吗?这可能是什么原因以及如何解决?
Traceback (most recent call last):
File "C:/Users/LorealAdmin/PycharmProjects/LorealDigitalConnectors/Facebook2/runner.py", line 89, in <module>
r.campaigns()
File "C:/Users/LorealAdmin/PycharmProjects/LorealDigitalConnectors/Facebook2/runner.py", line 35, in campaigns
self.db.ins_campaigins(self.api.campaigns(acc))
File "C:\Users\LorealAdmin\PycharmProjects\LorealDigitalConnectors\Facebook2\db_conn.py", line 83, in ins_campaigins
stop_time = camp['stop_time']
File "C:\Anaconda3\lib\site-packages\facebookads\adobjects\abstractobject.py", line 48, in __getitem__
return self._data[str(key)]
KeyError: 'stop_time'
非常感谢!
解决方案
#encoding:utf8
try:
from api_conn import Facebook
except:
from .api_conn import Facebook
try:
from db_conn import Database
except:
from .db_conn import Database
try: from .fb_utilities import *
except:from fb_utilities import *
import time
class Runner:
"""Class that connecting api_conn and db_conn together. Main runner"""
def __init__(self):
self.api = Facebook()
self.db = Database()
def accounts(self):
pass #DEPRECATED
# print('Loading accounts')
# accs = self.api.accounts()
# self.db.ins_adaccounts(accs)
def campaigns(self):
print('Loading campaigns')
accs = self.db.get_adaccounts()
accs = ad_accounts
for acc in accs:
time.sleep(2)
print('slept 2 seconds')
self.db.ins_campaigins(self.api.campaigns(acc))
print(self.api.campaigns(acc))
def adsets(self):
print('Loading ad sets')
accs = ad_accounts#self.db.get_adaccounts()
for acc in accs:
time.sleep(2)
self.db.ins_adsets(self.api.adsets(acc))
def ads(self):
print('Loading ads')
accs = ad_accounts#self.db.get_adaccounts()
for acc in accs:
time.sleep(2)
self.db.ins_ads(self.api.ads(acc))
def creatives(self):
print('Loading creatives')
accs = ad_accounts#self.db.get_adaccounts()
for acc in accs:
time.sleep(2)
self.db.ins_creative(self.api.creatives(acc))
def ad_statistics(self):
print('Loading Ad Statistics')
accs = ad_accounts# self.db.get_adaccounts()
for acc in accs:
print('now is loading account ----', acc)
camps = self.db.get_campaigns_by_acc(acc)
for camp in camps:
# self.db.ins_ad_statistics(self.api.adaccount_stat(acc))
time.sleep(2)
# self.db.ins_ad_statistics(self.api.ad_statistics(camp))
def ad_statistics_cum(self):
accs = self.db.get_adaccounts()
for acc in accs:
# camps = self.db.get_campaigns_by_acc(acc)
# for camp in camps:
self.db.ins_ad_statistics_cum(self.api.adaccount_stat_cum(acc))
def campaign_statistics_cum(self):
print('Loading Campaign statistics')
accs = self.db.get_adaccounts()
for acc in accs:
camps = self.db.get_campaigns_by_acc(acc)
for camp in camps:
self.db.ins_statistics_cum_campaign(self.api.adaccount_stat_cum_campaign(acc))
if __name__ == '__main__':
r = Runner()
r.accounts()
r.campaigns()
r.adsets()
r.ads()
r.creatives()
r.ad_statistics()
r.campaign_statistics_cum()
推荐阅读
- php - CakePHP 4.0 可重用控制台(以前的任务)
- oracle - 基于带 Oracle 原生连接的变量 SSRS 的变量
- apache-spark - 名称中的日期时 Spark CSV 文件写入错误 - InvalidClassException:org.apache.commons.lang3.time.FastDateParser
- java - 按某个值过滤二维数组的行
- javascript - 普通 JS 中的粘性表格标题
- wordpress - Wordpress 网站在 URL 中获取带有动态查询字符串的 DDOS
- python - 抓取网页内容时出现问题
- java - 如何使用 Selenium 和 Java 查找具有给定 xpath 的元素
- javascript - 如何仅在相关输入字段内显示文本?
- javascript - 赛普拉斯单选按钮断言