from html.parser import HTMLParser
import json
#Classe Pour extraire les données historique
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.recording = 0
self.data = []
def handle_starttag(self, tag, attrs):
if attrs == [('class', 'c-table c-table--generic c-table--generic c-shadow-overflow__table-fixed-column'), ('data-table-sorter', None)]:
self.recording=1
def handle_endtag(self, tag):
if tag =="table":
self.recording=0
def handle_data(self, data):
if self.recording:
tmp=data.replace(" ","")
tmp=tmp.replace("\n","")
if tmp!='':
self.data.append(tmp)
def struct(self):
dic = {}
i=11;
dic["1semaine"]=self.data[i:i+3]
i+=4
dic["1mois"]=self.data[i:i+3]
i+=4
dic["3mois"]=self.data[i:i+3]
i+=4
dic["6mois"]=self.data[i:i+3]
i+=4
dic["1an"]=self.data[i:i+3]
i+=4
dic["3ans"]=self.data[i:i+3]
i+=4
dic["5ans"]=self.data[i:i+3]
i+=4
dic["10ans"]=self.data[i:i+3]
i+=4
dic["MM20"]=self.data[i]
i+=1
dic["MM50"]=self.data[i]
i+=1
dic["MM100"]=self.data[i]
i+=1
dic["RSI14"]=self.data[i]
i+=1
return dic
def getData(self):
return self.data
#Fonction pour extraire les donnée du graphique journalier
def Daily(self,html):
l1=html.find("var chart") #On cherche le debuy du JSON du graph
l2=html.find("chart.data.amChartData);") # On cherche la fin du JSON du graph
data=html[l1+29:l2+32-276] # A améliorrer ???
data = json.loads(data) # On charge le Json
idf = data["data"]["amChartConfig"]["graphs"][0]["id"]# On recupere l'identifiant du graphique
data=data["data"]["amChartData"][idf]#On extrait du Json les valeurs du graph
dic={}
for i in data : #Pour chaque valeurs de la journée on met dans le dictionnaire
heu = i["period"]
val = i["value"]
dic[heu]=val
return dic