Очень медленные ответы PrivatBank API
Задача получить данные с API PrivatBank, по курсу валют с 2014 года по текущую дату. Ответы возвращаются в XML, отрываю целыми страницами и кладу в .txt, за 10 мин всего один месяц сложил. Помогите разобраться пожалуйста, это ограничения на сервере или мой код слишком ограничен.
Вот код:
import requests
from bs4 import BeautifulSoup
from mod_file import date_for_links
def get_html(url):
r = requests.get(url)
return r
def get_total_pages(html): # суп
soup = BeautifulSoup(html, 'lxml')
s = soup.exchangerates
return s
def main(): # главная функция
arr_date = date_for_links() # функция из файла mod_file,
# которая генерирует список ссылок
in_file = open("C:/Users/11/Desktop/PB_API/file_new.txt", "w")
for URL in arr_date: # цикл распаковки списка ссылок
html = get_html(URL)
get_total_pages(html.text)
in_file.write(html.text)
main()
вот второй файл
from datetime import date, timedelta
url = 'https://api.privatbank.ua/p24api'
host = '/exchange_rates?date='
# url + host + day.strftime('%d.%m.%Y') - собранная ссылка
def date_for_links(): # функция для генерации списка ссылок
arr_date = [] # список для всех ссылок
old_date = date(2014, 12, 1) # начальная дата
new_date = date.today() # текущая дата
delta_days = new_date - old_date # дельта
for i in range(delta_days.days + 1):
day = old_date + timedelta(days=i)
URL = url + host + day.strftime('%d.%m.%Y') # собранная ссылка
arr_date.append(URL)
return arr_date
Переделал программу, но столкунулся с записью в файл.csv (файл постоянно перезаписывается) и не могу понять почему некотырые данные при записи меняют тип (в ответе приходит - 15.7000000, а в файл записывается - 15.июл), помогите плз разобраться, вот обновленный код (второй файл проги без изменений):
'''
import mod_file
import csv
import os
FILE = 'API_PB.csv'
def getjason(url):
import requests
requests = requests.get(url)
respounse = requests.json()
arr = []
for key, value in respounse.items():
if key == 'date':
arr.append({
key: value
})
elif key == 'exchangeRate':
for i in value:
for j in i:
if i[j] == 'USD':
for z in i:
arr.append({
z: i[z]
})
return arr
def save_parsed_date(arr, path):
with open(path, 'w', newline='') as file:
w = csv.writer(file, delimiter=';')
w.writerow(['ДАТА', 'UAH', 'USD', 'КУРС НБ/sale',
'КУРС НБ/purchase', 'КУРС ПБ/sale', 'КУРС ПБ/purchase'])
w.writerow([str(*list(i.values())) for i in arr])
def main(): # главная функция
arr_date = mod_file.date_for_links()
for url in arr_date:
getjason(url)
arr = getjason(url)
save_parsed_date(arr, FILE)
os.startfile(FILE)
main()'''