Необходимо запустить программу, которая очищает данные один раз в день автономно - PullRequest
0 голосов
/ 18 апреля 2020

Я создал программу, которая очищает онлайн-таблицу и записывает в нее файл Excel. Чтобы эти данные были полезны, мне нужно очищать их один раз в день в одно и то же время каждый день (финансовые данные).

Я планирую упаковать код в Windows исполняемый файл и запустить его автономно на моем VPS. Ниже приведен код. Как бы я go рассказал о цикле запуска программы один раз в день ровно в 9 часов утра и создании файла Excel с текущей датой? Кроме того, как бы я go о упаковке программы в файл .exe? Любая помощь очень ценится.

'''
   This program will scrape the Dukascopy sentiment iframe and create a table of all currency pairs from the historical sentiment index.
   it also writes the data to an excel file.
'''
import requests
import re
import json
import pandas as pd

params = {
    'path': 'historical_sentiment_index/data',
    'type': 'swfx',
    'jsonp': '_callbacks____2k8ym6sn2'
}

headers = {
    'Referer': 'https://freeserv.dukascopy.com/2.0/?path=historical_sentiment_index/index&showHeader=false&tableBorderColor=%234bafe9&liquidity=consumers&availableInstruments=EUR/JPY%2CUSD/RUB%2CUSD/HKD%2CAUD/CAD%2CAUD/CHF%2CAUD/JPY%2CAUD/NZD%2CAUD/SGD%2CCAD/CHF%2CCAD/HKD%2CCAD/JPY%2CCHF/JPY%2CCHF/PLN%2CCHF/SGD%2CEUR/AUD%2CEUR/CAD%2CEUR/CHF%2CEUR/DKK%2CEUR/GBP%2CEUR/HKD%2CEUR/NOK%2CEUR/NZD%2CEUR/PLN%2CEUR/RUB%2CEUR/SEK%2CEUR/SGD%2CEUR/TRY%2CGBP/AUD%2CGBP/CAD%2CGBP/CHF%2CGBP/JPY%2CGBP/NZD%2CHKD/JPY%2CNZD/CAD%2CNZD/CHF%2CNZD/JPY%2CSGD/JPY%2CTRY/JPY%2CUSD/CNH%2CUSD/DKK%2CUSD/MXN%2CUSD/NOK%2CUSD/PLN%2CUSD/SEK%2CUSD/SGD%2CUSD/TRY%2CUSD/ZAR%2CZAR/JPY&availableCurrencies=AUD%2CCAD%2CCHF%2CGBP%2CHKD%2CJPY%2CMXN%2CNOK%2CNZD%2CPLN%2CRUB%2CSEK%2CSGD%2CTRY%2CUSD%2CZAR%2CEUR%2CXAG%2CXAU&sort=volume&order=asc&last=true&sixhours=true&oneday=true&fivedays=true&width=100%25&height=1385&adv=popup&lang=en',
}


def main(url):
    with requests.Session() as req:
        r = req.get(
            "https://freeserv.dukascopy.com/2.0/index.php", params=params, headers=headers)
        match = re.search(r"2k8ym6sn2\((\[.*?])", r.text).group(1)
        data = json.loads(match)
        global df
        df = pd.DataFrame(data).set_index("name")
        #print(df)  # For Full DataFrame view.
        #df.to_csv("data.csv")  # to save it in CSV file
        #print(df.loc['AUD/CAD']) # you can have it as list or dict with to_list() or to_dict()

main("https://freeserv.dukascopy.com/2.0/index.php")


#Creating a dataframe of the needed currency pairs to analyze
df2 = df.loc[['EUR/USD',
'USD/CAD','GBP/USD','USD/CHF','USD/JPY','GBP/USD','CAD/CHF','AUD/CAD','AUD/CHF','AUD/JPY','AUD/NZD','AUD/SGD','CAD/CHF','CAD/HKD','CAD/JPY',
'CHF/JPY','CHF/SGD','EUR/AUD','EUR/CAD','EUR/CHF','EUR/HKD','EUR/JPY','EUR/NZD','EUR/SEK','EUR/SGD','EUR/TRY','GBP/AUD','GBP/CAD','GBP/CHF',
'GBP/JPY','GBP/NZD','HKD/JPY','NZD/CAD','NZD/CHF','NZD/JPY','SGD/JPY','TRY/JPY','USD/CNH','USD/HKD','USD/RUB','USD/SEK','USD/SGD','USD/TRY',
'USD/ZAR','XAU/USD','XAG/USD']]

#Dropping the liquidity provider sentiment
df2 = df2.drop(['last_long','sixhours_long','oneday_long','fivedays_long'],axis=1)
#Renaming the columns for clarity
df2.columns = ['Last update','6hours','1day','5days']
#Sort the table into alphabetical order
df2.sort_values(by='name',axis='index',ascending=True,inplace=True)

#Writing the data into an excel file on the desktop
output_path = r'C:/Users/II/Desktop/Sentiment Data/April,18,2020 - Sentiment Data.xlsx'
from pandas import ExcelWriter
from pandas import ExcelFile

writer = ExcelWriter(output_path)
df2.to_excel(writer,'Sheet1',index=True,)
writer.save()

1 Ответ

0 голосов
/ 19 апреля 2020

просто добавьте следующий код в ваш скрипт

import datetime
files_save = str(datetime.date.today().strftime("%d %B %Y"))+'.xlsx'

и запланируйте использование планировщика задач

, убедитесь, что вы вошли в систему как администратор или у вас есть такой же доступ, как и у администратора.

Пуск -> Панель управления -> Система и безопасность -> Администрирование -> Задача Планировщик Действие -> Создание основы c Задача -> Введите имя и Нажмите Далее

Следуйте инструкциям мастера.

...