Reputation: 558
I want to create program which uses api to generate some data/statistics.
Api is presented on 32 pages, so I have to iterate, add page to list and after getting all of them I want to convert elements in list to one huge object and operate on him.
So, to get data from API and store in the list I have:
response = []
for i in range(1,32):
url = "https://api.dane.gov.pl/resources/17201/data?page="+str(i)
response.append(requests.get(url).json)
I was trying using json.loads(), json.dumps() but nothing worked. Any solution idea hot to solve this?
EDIT: when I collect my response and use:
valid = json.dumps(response)
print(valid)
I got error: Object of type 'method' is not JSON serializable
Upvotes: 1
Views: 220
Reputation: 995
Try:
import json
def collect_responses(num_of_pages):
response = []
for i in range(1, num_of_pages):
url = "https://api.dane.gov.pl/resources/17201/data?page="+str(i)
response.append(requests.get(url).json())
return response
valid = json.dumps({"responseList": collect_responses(32)}
Or in a more general way:
def paginate_while_200(url_template_missing_pagenum):
list_of_json_response = []
i = 1
while True:
response = requests.get(url % i)
if response.status == 200:
try:
list_of_json_response.append(response.json())
i += 1
finally:
return list_of_json_response
else:
return list_of_json_response
url = "https://api.dane.gov.pl/resources/17201/data?page=%d"
json.dumps({"responseList": paginate_while_200(url)})
Upvotes: 1