Нужно заходит на API (GET), получать тело и сохранять в текстовые файли

Нужно заходит на API (GET), получать тело и сохранять в текстовые файлики, идеально если заходить на 2 API и 2 файла в одном скрипте, повторять каждые N секунд,пытался с pycurl

import pycurl
from io import BytesIO 

b_obj = BytesIO() 
crl = pycurl.Curl() 

crl.setopt(crl, 'https://dapi.binance.com/dapi/v1/ticker/price?Symbol=BTCUSD_200925')


crl.setopt(crl.WRITEDATA, b_obj)

crl.perform() 


crl.close()

get_body = b_obj.getvalue()


print('Output of GET request:\n%s' % get_body.decode('utf8')) 

но ошибка на crl.perform()


Ответы (1 шт):

Автор решения: Namerek

Если библиотека requests еще не установлена то pip install requests

import json
import os

import requests


if __name__ == '__main__':
    
    response = requests.get('https://dapi.binance.com/dapi/v1/ticker/price?Symbol=BTCUSD_200925')

    if response.status_code == 200:
        # Если вам нужно сохранять предыдущие значения
        # Считываем предыдущие значения если файл с ними существует
        exists_values = []
        if os.path.exists('./some_file.json'):
            exists_values = json.load(open('./some_file.json', 'r', encoding='utf-8'))
        
        # Добавляем новые
        exists_values += response.json()
        
        # записываем обратно в файл
        json.dump(
            exists_values,
            open('./some_file.json', 'w', encoding='utf-8'),
            ensure_ascii=False
            # Если в ответе с гарантией не будет спец символов и чего нибудь не ascii то параметр можно опустить
            # хотя это еще зависит от того, где будут потом использоваться эти данные, а то и обязательно его убрать может быть нужно
        )
        
        # если предыдущие значения сохранять не нужно то пропускаем блок где мы считывали предыдущие значения и добавляли к ним новые и просто :

#        json.dump(
#            response.json(),
#            open('./some_file.json', 'w', encoding='utf-8'),
#            ensure_ascii=False
            # Если в ответе с гарантией не будет спец символов и чего нибудь не ascii то параметр можно опустить
            # хотя это еще зависит от того, где будут потом использоваться эти данные, а то и обязательно его убрать может быть нужно
#        )
→ Ссылка