не уверен, почему Милад предложил использовать write()
- ваш код в основном в порядке, просто нужно сделать отступ правильно. Вы можете сделать:
import requests
import json
for i in range(1, 5):
vino = requests.get('https://www.vivino.com/api/explore/explore?country_code=dk¤cy_code=DKK&grape_filter=varietal&merchant_id=&min_rating=1&order_by=&order=desc&page='+str(i)+'&price_range_max=2500&price_range_min=0&wine_type_ids[]=1&wine_type_ids[]=2')
data = vino.json()
with open('data' + str(i) + '.json', 'w') as outfile:
json.dump(data, outfile)
обратите внимание на лишние пробелы в начале последней строки, они важны и это то, на что люди ссылаются с отступом. чтение некоторых руководств по Python может помочь
сделав этот код немного приятнее, вы можете использовать больше интерфейса requests
, выполнив:
import requests
import json
for page in range(1, 5):
vino = requests.get('https://www.vivino.com/api/explore/explore', params={
'country_code': 'dk',
'currency_code': 'DKK',
'grape_filter': 'varietal',
'min_rating': 1,
'page': page,
'wine_type_ids[]': [1, 2],
})
# raise an exception if this request wasn't successful
vino.raise_for_status()
data = vino.json()
with open('data' + str(page) + '.json', 'w') as outfile:
json.dump(data, outfile)
если вы собираетесь читать вывод самостоятельно, я бы "распечатал" вывод примерно так:
with open('data' + str(page) + '.json', 'w') as outfile:
json.dump(data, outfile, sort_keys=True,
indent=4, separators=(',', ': '))
наконец, если вы используете последнюю версию Python3, я бы также использовал новые «строки формата»:
with open(f'data{page}.json', 'w') as outfile:
json.dump(data, outfile, sort_keys=True,
indent=4, separators=(',', ': '))
, поскольку это приводит к тому, что код становится проще для чтения ...