Extraction.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from html.parser import HTMLParser
  2. import json
  3. #Classe Pour extraire les données historique
  4. class MyHTMLParser(HTMLParser):
  5. def __init__(self):
  6. HTMLParser.__init__(self)
  7. self.recording = 0
  8. self.data = []
  9. def handle_starttag(self, tag, attrs):
  10. if attrs == [('class', 'c-table c-table--generic c-table--generic c-shadow-overflow__table-fixed-column'), ('data-table-sorter', None)]:
  11. self.recording=1
  12. def handle_endtag(self, tag):
  13. if tag =="table":
  14. self.recording=0
  15. def handle_data(self, data):
  16. if self.recording:
  17. tmp=data.replace(" ","")
  18. tmp=tmp.replace("\n","")
  19. if tmp!='':
  20. self.data.append(tmp)
  21. def struct(self):
  22. dic = {}
  23. i=11;
  24. dic["1semaine"]=self.data[i:i+3]
  25. i+=4
  26. dic["1mois"]=self.data[i:i+3]
  27. i+=4
  28. dic["3mois"]=self.data[i:i+3]
  29. i+=4
  30. dic["6mois"]=self.data[i:i+3]
  31. i+=4
  32. dic["1an"]=self.data[i:i+3]
  33. i+=4
  34. dic["3ans"]=self.data[i:i+3]
  35. i+=4
  36. dic["5ans"]=self.data[i:i+3]
  37. i+=4
  38. dic["10ans"]=self.data[i:i+3]
  39. i+=4
  40. dic["MM20"]=self.data[i]
  41. i+=1
  42. dic["MM50"]=self.data[i]
  43. i+=1
  44. dic["MM100"]=self.data[i]
  45. i+=1
  46. dic["RSI14"]=self.data[i]
  47. i+=1
  48. return dic
  49. def getData(self):
  50. return self.data
  51. #Fonction pour extraire les donnée du graphique journalier
  52. def Daily(self,html):
  53. l1=html.find("var chart") #On cherche le debuy du JSON du graph
  54. l2=html.find("chart.data.amChartData);") # On cherche la fin du JSON du graph
  55. data=html[l1+29:l2+32-276] # A améliorrer ???
  56. data = json.loads(data) # On charge le Json
  57. idf = data["data"]["amChartConfig"]["graphs"][0]["id"]# On recupere l'identifiant du graphique
  58. data=data["data"]["amChartData"][idf]#On extrait du Json les valeurs du graph
  59. dic={}
  60. for i in data : #Pour chaque valeurs de la journée on met dans le dictionnaire
  61. heu = i["period"]
  62. val = i["value"]
  63. dic[heu]=val
  64. return dic