Bonjour,
Pas de soucis pour cette histoire d’ extention. Pour info, je joins les deux scripts qui ne fonctionnent plus:
#!/usr/bin/env python3
from os import chdir
from datetime import datetime
from bs4 import BeautifulSoup
import urllib.request
import ssl
#Fonction appelée
def Control_Action(ev):
ctrl = ev.Source
frm = ev.Source.Model.Parent
subform = frm.getByName(“Mn_Gn”)
#Fichier de sauvegarde
chdir(’/mnt/El_Casot/Yvon/Finance/Bourse’)
with open(“cotes_jour.csv”, “w”) as fch: pass
#Recherche de la date du jour
datejour = datetime.today().strftime(’%Y-%m-%d’)
#print (datejour)
#Dictionnaire de titres
titre = {“1”:“https://www.boursorama.com/cours/1rPAF/",“2”:"https://www.boursorama.com/cours/1rPACA/”,
“5”:“https://www.boursorama.com/cours/1rPFDJ/",“7”:"https://www.boursorama.com/cours/1rPRNO/”,
“8”:“https://www.boursorama.com/cours/1rPCA/",“10”:"https://www.boursorama.com/cours/1rPGLE/”,
“11”:“https://www.boursorama.com/cours/1rPSGO/",“12”:"https://www.boursorama.com/cours/1rPABNX/”,
“13”:“https://www.boursorama.com/cours/1rPEOS/",“14”:"https://www.boursorama.com/cours/1rPBOL/”,
“16”:“https://www.boursorama.com/cours/1rPENGI/",“17”:"https://www.boursorama.com/cours/1rPLAT/”,
“18”:“https://www.boursorama.com/cours/1rPMERY/",“19”:"https://www.boursorama.com/cours/1rPFNAC/”,
“20”:“https://www.boursorama.com/cours/1rPPVL/",“21”:"https://www.boursorama.com/cours/1rPSAN/”,
“22”:“https://www.boursorama.com/cours/1rPSW/",“23”:"https://www.boursorama.com/cours/1rPITP/”,
“25”:“https://www.boursorama.com/cours/1rPDBV/",“26”:"https://www.boursorama.com/cours/1rPAC/”,
“27”:“https://www.boursorama.com/cours/1rPALO/",“28”:"https://www.boursorama.com/cours/1rPOSE/”,
“30”:“https://www.boursorama.com/cours/1rPSCR/",“31”:"https://www.boursorama.com/cours/1rPCRI/”,
“32”:“https://www.boursorama.com/cours/1rPALD/",“33”:"https://www.boursorama.com/cours/1rPABCA/”,
“34”:“https://www.boursorama.com/cours/1rPATE/",“35”:"https://www.boursorama.com/cours/1rPAKA”,
“36”:“https://www.boursorama.com/cours/1rPMBWS/",“37”:"https://www.boursorama.com/cours/1rPEN/”,
“38”:“https://www.boursorama.com/cours/1rPTKTT/",“41”:"https://www.boursorama.com/cours/1rPML/”,
“42”:“https://www.boursorama.com/cours/1rPDLT/",“43”:"https://www.boursorama.com/cours/1rPSU/”,
“44”:“https://www.boursorama.com/cours/1rPIPS/",“45”:"https://www.boursorama.com/cours/1rPDG/”,
“46”:“https://www.boursorama.com/cours/1rPVK/",“47”:"https://www.boursorama.com/cours/1rPTFI/”,
“48”:“https://www.boursorama.com/cours/1rPEXE/",“49”:"https://www.boursorama.com/cours/1rPPIG/”,
“50”:“https://www.boursorama.com/cours/1rPDEC/",“51”:"https://www.boursorama.com/cours/1rPMAU/”,
“52”:“https://www.boursorama.com/cours/1rPNRG/",“53”:"https://www.boursorama.com/cours/1rPSOI/”,
“54”:“https://www.boursorama.com/cours/1rPBNP/",“55”:"https://www.boursorama.com/cours/1rPADP/”,
“56”:“https://www.boursorama.com/cours/1rPELIOR/",“57”:"https://www.boursorama.com/cours/1rPCS/”,
“58”:“https://www.boursorama.com/cours/1rPSTLAP/",“59”:"https://www.boursorama.com/cours/1rPDAR/”,
“60”:“https://www.boursorama.com/cours/1rPVLA/",“62”:"https://www.boursorama.com/cours/1rPNXI/”,
“63”:“https://www.boursorama.com/cours/1rPALATA/",“65”:"https://www.boursorama.com/cours/1rPCGG/”,
“66”:“https://www.boursorama.com/cours/1rPABVX/",“67”:"https://www.boursorama.com/cours/1rPELIS/”,
“68”:“https://www.boursorama.com/bourse/indices/cours/1rPCAC/",“69”:"https://www.boursorama.com/cours/1rPBN/”,
“70”:“https://www.boursorama.com/cours/1rPSPIE/",“71”:"https://www.boursorama.com/cours/1rPALMRB/”,
“72”:“https://www.boursorama.com/cours/1rPMDM/",“73”:"https://www.boursorama.com/cours/1rPORP/”,
“74”:“https://www.boursorama.com/cours/1rPCGM/",“75”:"https://www.boursorama.com/cours/1rPVETO/”,
“76”:“https://www.boursorama.com/cours/1rPSMCP/",“77”:"https://www.boursorama.com/cours/1rPGBT/”,
“78”:“https://www.boursorama.com/cours/1rPLACR/",“79”:"https://www.boursorama.com/cours/1rPVIE/”,
“80”:“https://www.boursorama.com/cours/1rPTTE/",“81”:"https://www.boursorama.com/cours/1rPAB/”,
“82”:“https://www.boursorama.com/cours/1rPICAD/",“83”:"https://www.boursorama.com/cours/1rPERF/”,
“85”:“https://www.boursorama.com/cours/1rPALNMR/",“87”:"https://www.boursorama.com/cours/1rPALLOG/”,
“88”:“https://www.boursorama.com/cours/1rPIPH/",“89”:"https://www.boursorama.com/cours/1rPTNG/”,
“90”:“https://www.boursorama.com/cours/1rPAVT/",“92”:"https://www.boursorama.com/cours/1rPNANO/”,
“93”:“Pétrole Brent, Cours Pétrole Brent BRN - Prix, Cotation, Bourse Ice Europ - Boursorama”,
#“94”:“Boursorama, Votre partenaire pour investir”,
“97”:“https://www.boursorama.com/cours/1rPVMX/",“99”:“https://www.boursorama.com/cours/1rPWAGA/”,“100”:"https://www.boursorama.com/cours/1rPVLTSA/”,
“101”:“https://www.boursorama.com/cours/1rPPARRO/",“102”:"https://www.boursorama.com/cours/1rPALNEV/”,
“103”:“https://www.boursorama.com/cours/1rPTCHCS/",“104”:"https://www.boursorama.com/cours/1rPVANTI/”,
“105”:“https://www.boursorama.com/cours/1rPLBIRD/",“106”:"https://www.boursorama.com/cours/1rPPHXM/”,
“107”:“https://www.boursorama.com/cours/1rPADOC/",“108”:"https://www.boursorama.com/cours/1rPMETEX/”,
“109”:“CLARIANE Cours Action CLARI, Cotation Bourse Euronext Paris - Boursorama”}
i = 1
#Extraction des données de la page
for key, valeur in titre. items() :
#Récupération de la clé du titre
url = valeur
cfttr = key
cfcote = i
#Extraire la cote d’ ouverture
rqt = urllib.request.Request(url)
#Passer outre la vérification de certificat
context = ssl._create_unverified_context()
rslt = urllib.request.urlopen(rqt, context=context)
#rslt = urllib.request.urlopen(rqt)
soup = BeautifulSoup(rslt, ‘html.parser’)
ouverture = soup.select(".c-instrument–open")[0].text
if cfttr == ‘68’:
ouverture = ouverture.replace(’ ‘,’’)
# Création de la liste cotation
listecote=soup.find(“div”,“c-faceplate”)
cotation = listecote[“data-ist-init”]
#Extraire la cote la plus haute
departhaut= cotation.index(’,’)
departvaleurhaut = cotation.index(’:’, departhaut)
finhaut = cotation.index(’,’ , departvaleurhaut)
haut = cotation[(departvaleurhaut + 1):finhaut]
#Extraire la cote la plus basse
departvaleurbas = cotation.index(’:’,finhaut)
finbas = cotation.index(’,’, departvaleurbas)
bas = cotation[(departvaleurbas + 1):finbas]
#Saut de la cote de fermeture de la veille
departvaleurfermeture = cotation.index(’:’,finbas)
finfermeture = cotation.index(’,’, departvaleurfermeture)
#Extraire le volume échangé
departvaleurvolume = cotation.index(’:’, finfermeture)
finvolume = cotation.index(’,’, departvaleurvolume)
volume = cotation[(departvaleurvolume + 1): finvolume]
if cfttr == ‘68’:
volume = volume + ‘000’
#Extraire la date de la cotation
departvaleurdate = cotation.index(’:’, finvolume)
findate = cotation.index(’,’, departvaleurdate)
datecote = cotation[(departvaleurdate + 2): (findate - 10)]
#print ('date : ', datecote)
#if datejour == datecote :
# message = “La bourse est ouverte”
#else :
# message = “La bourse est fermée ce jour”
#print (message)
#Extraire la variation du cours
departvaleurvariation = cotation.index(':', findate)
finvariation = cotation.index(',', departvaleurvariation)
variation = cotation[(departvaleurvariation + 1): finvariation]
#print ('pourcentage : ',variation)
#Extraire la cote du jour
departvaleurcote = cotation.index(':', finvariation)
fincote = cotation.index(',', departvaleurcote)
cote = cotation[(departvaleurcote + 1): fincote]
print ('Cote du jour : ', cfttr , ' - ',cote)
#Sauvegarde des données
with open('cotes_jour.csv', 'a') as fch:
if i == 1:
#fch.write('Cf_Cote');fch.write(',');
fch.write('CfTtr'); fch.write(','); fch.write('Date'); fch.write(','); fch.write('Cotation')
fch.write(','); fch.write('Ecart'); fch.write(','); fch.write('Ouverture'); fch.write(',')
fch.write('Haut');fch.write(','); fch.write('Bas');fch.write(',');fch.write('Volume')
fch.write('\n')
#fch.write(str(cfcote)); fch.write(',');
fch.write(cfttr); fch.write(','); fch.write(str(datecote)); fch.write(','); fch.write(str(cote))
fch.write(','); fch.write(str(variation)); fch.write(','); fch.write(str(ouverture)); fch.write(',')
fch.write(str(haut));fch.write(','); fch.write(str(bas));fch.write(','); fch.write(str(volume))
fch.write('\n')
i += 1
Ce script se lance normalement depuis une macro Basic. La fonction
def Control_Action(ev):
n’ a été rajoutée que pour tenter de contourner le problème.
Le deuxième script est l’ objet du premier message. Je le rajoute uniquement pour que vous ayez l’ ensemble dans le même message.
#!/usr/bin/env python3
from achatvente.cht import achat
from achatvente.vnt import vente
def Control_Action(ev):
ctrl = ev.Source
frm = ev.Source.Model.Parent
subform = frm.getByName("F_Ctn")
try :
ordre = input ("Voulez-vous effectuer un achat d' action ? ")
if ordre == 'o' or ordre == 'O':
achat()
else :
vente()
except EOFError as e :
print (e)
avec ces sous programme:
def achat():
mntinvestissement = input("combien voulez-vous investir ? ")
a = int(mntinvestissement)
vlractions = input("Cote d' une action ? ")
valeur = float(vlractions)
x = int(a/valeur)
print("Vous pouvez acheter un maximum de " ,x, "actions")
nbractions = input("Combien voulez-vous acheter d' actions ? ")
# Calcul du montant des frais
xactions = int(nbractions)
mntcht = valeur * xactions
b = float(mntcht)
if b <= 500 :
frais = 1.95
elif b > 500 and b < 2000 :
frais = 3.90
elif b >= 2000 :
frais = b * 0.020
frsgst = float(frais)
montant = (xactions*valeur) + frsgst
mntachat = float(montant)
prixrevient = mntachat / xactions
prixunit = float(prixrevient)
ventemini = prixunit * 1.05
print ("Cout de l' opération : ",round(mntachat, 3), " €")
print ("Prix de revient unitaire :",round(prixrevient, 3), " €")
print ("prix de vente minimum : ", round(ventemini, 3), " €")
if __name__ == "__main__":
achat()
def vente():
nbractions = input("Combien voulez-vous vendre d' actions ? ")
vlractions = input("Cote d' une action ? ")
xactions = int(nbractions)
valeur = float(vlractions)
# Calcul du montant des frais
mntvnt = valeur * xactions
b = float(mntvnt)
if b <= 500 :
frais = 1.95
elif b > 500 and b < 2000 :
frais = 3.90
elif b >= 2000 :
frais = b * 0.020
frsgst = float(frais)
recette = (xactions*valeur) - frsgst
mntvente = float(recette)
prixrevient = mntvente / xactions
prixunit = float(prixrevient)
print ("Bilan de l' opération : ", round(recette, 3), ' €')
print ("Prix de revient unitaire :", round(prixunit, 3), ' €')
if __name__ == "__main__":
vente()
Voila ce que je peux vous communiquer comme information.
Cordialement