我正在使用semrush来获取网站分析的响应。我收到的是CSV类数据,在查看文档后,我无法得到我可以从SEMRUSH获得json
响应的因素
以下是代码和相应的回复:
>>> data = requests.get('http://api.semrush.com/?key=KEY&type=domain_ranks&domain=example.com')
>>> data.text
u'Date;Database;Domain;Rank;Organic Keywords;Organic Traffic;Organic Cost;Adwords Keywords;Adwords Traffic;Adwords Cost;PLA keywords;PLA uniques\r\n20171108;ae;exmaple.com;34;3013;690144;700580;0;0;0;0;0\r\n20171108;af;example.com;88;663;17056;2868;0;0;0;0;0\r\n
我希望像这样在json中得到回应:
{
'Date':'20171108',
'Domain':'example.com',
'Database': ['ae','af']
'ae':[
'Organic Keywords': 34,
'Organic Traffic': 3013
'Organic Cost':690144,
'Adwords Keywords':700580,
'Adwords Traffic':0,
'Adwords Cost':0,
'PLA keywords':0,
'PLA uniques':0
],
'af':[
'Rank':
'Organic Keywords':88,
'Organic Traffic':663,
'Organic Cost':17056,
'Adwords Keywords':
'Adwords Traffic':0,
'Adwords Cost':0,
'PLA keywords':0,
'PLA uniques':0
]
}
请告诉我如何改进以获得上述结果。
答案 0 :(得分:1)
尝试使用以下代码行来实现:
d1 = dict(zip(data.text.splitlines()[0].split(';'),data.text.splitlines()[1].split(';')))
d1['Database'] = [d1['Database'],text.splitlines()[2].split(';')[1]]
d1[d1['Database'][0]] = dict(list(d1.items())[3:])
d2 = dict(zip(text.splitlines()[0].split(';'),text.splitlines()[2].split(';')))
d1[d1['Database'][1]] = dict(list(d2.items())[3:])
for i in list(d1.keys())[3:-2]:
d1.pop(i)
print(d1)
现在输出将是:
{'Date': '20171108', 'Database': ['ae', 'af'], 'Domain': 'exmaple.com', 'ae': {'Rank': '34', 'Organic Keywords': '3013', 'Organic Traffic': '690144', 'Organic Cost': '700580', 'Adwords Keywords': '0', 'Adwords Traffic': '0', 'Adwords Cost': '0', 'PLA keywords': '0', 'PLA uniques': '0'}, 'af': {'Rank': '88', 'Organic Keywords': '663', 'Organic Traffic': '17056', 'Organic Cost': '2868', 'Adwords Keywords': '0', 'Adwords Traffic': '0', 'Adwords Cost': '0', 'PLA keywords': '0', 'PLA uniques': '0'}}
打印效果更好:-)
pprint(d1)
将导致:
{'Database': ['ae', 'af'],
'Date': '20171108',
'Domain': 'exmaple.com',
'ae': {'Adwords Cost': '0',
'Adwords Keywords': '0',
'Adwords Traffic': '0',
'Organic Cost': '700580',
'Organic Keywords': '3013',
'Organic Traffic': '690144',
'PLA keywords': '0',
'PLA uniques': '0',
'Rank': '34'},
'af': {'Adwords Cost': '0',
'Adwords Keywords': '0',
'Adwords Traffic': '0',
'Organic Cost': '2868',
'Organic Keywords': '663',
'Organic Traffic': '17056',
'PLA keywords': '0',
'PLA uniques': '0',
'Rank': '88'}}
希望这会有所帮助。