Есть несколько проблем с вашим примером кода.Я исправил код, чтобы прочитать API и доставить CSV в качестве вывода.
import requests as s
from requests.auth import HTTPBasicAuth
import pandas as pd
import json
import csv
proxies = {
'http': 'http://dummy.restapiexample.com/api/v1/employees',
'https': 'http://dummy.restapiexample.com/api/v1/employees'
}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
url = 'http://dummy.restapiexample.com/api/v1/employees' #get key
r = s.get(url=url, headers=headers)
employee_parsed = r.json();
emp_data = employee_parsed;
employ_data = open('testname.csv', 'w', encoding="utf-8")
csvwriter = csv.writer(employ_data)
count = 0
for emp in emp_data:
if count == 0:
header = emp.keys()
csvwriter.writerow(header)
count += 1
csvwriter.writerow(emp.values())
employ_data.close()
Вы можете использовать response.json (), чтобы напрямую получить ответ json, как показано в моем примере.Если вы хотите проанализировать ответ с помощью json.loads, вам нужно проанализировать только содержимое ответа.Это можно сделать следующим образом:
employee_parsed = json.loads(r.content)
Основная проблема заключалась в том, что используемый API не возвращал правильный ответ, если пользовательский агент не подделан Python.Это решается путем вставки поддельного заголовка.
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
url = 'http://dummy.restapiexample.com/api/v1/employees' #get key
r = s.get(url=url, headers=headers)
В моем примере я импортировал запросы как s, чтобы гарантировать выполнение кода.