def insert_bien(liste_dico): """Insertion des données scrapées dans la base de données""" # recuperation des données contenues dans la table ville debut = time.time() liste_ville = [] for v in Ville.select(): liste_ville += [v.nom] nb = 0 nouvelle_villes = [] for ddico in liste_dico: if ddico["lieu"] not in liste_ville: liste_ville.append(ddico["lieu"]) num_ville = Ville.create(nom=ddico["lieu"]) nouvelle_villes.append(num_ville) else: recuperateur = Ville.select().where(Ville.nom == ddico["lieu"]) for r in recuperateur: num_ville = r liste_dico[nb]["id_ville"] = num_ville.id_ville nb += 1 #creations des données dans la base grâce aux dictionnaire.id_ville for biens in liste_dico: try: with db.atomic(): Logement.create(**biens) except Exception as e: print(e) pass fin = time.time() performance_insert = [fin - debut] print("la fonction insert_bien a été executée en", performance_insert) return nouvelle_villes
def accueil(): villes = [] villes_db = Ville.select().where(Ville.prix_moyen_maison.is_null(False)) for ville in villes_db: villes += [ville.nom] image = graphique_index() return render_template("index.html", villes=villes, image=image)
def carte2(): villes = Ville.select(Ville,Coordonnees,Proximite).join(Coordonnees, on=(Ville.id_ville == Coordonnees.id_ville)) villes = villes.join(Proximite, on=(Ville.id_ville == Proximite.id_ville)) villes = list(villes.dicts()) return render_template('carte.html',villes=villes)
def selection_lien(ville): top = [] appartement = [] maison = [] immeuble = [] id_appartement, id_maison, id_immeuble = obtention_id() ville_choisie = Ville.select().where(Ville.nom == ville) id_ville = ville_choisie[0].id_ville prix_appartement = ville_choisie[0].prix_moyen_appart prix_maison = ville_choisie[0].prix_moyen_maison annonces = Logement.select(Logement, Types_bien).join( Types_bien, on=(Logement.id_type == Types_bien.id_type)).where( Logement.id_ville == id_ville) for annonce in annonces: id_type = annonce.id_type if id_type == id_appartement: try: if annonce.prix_metre_carre < prix_appartement: top += [annonce] else: appartement += [annonce] except: appartement += [annonce] if id_type == id_maison: try: if annonce.prix_metre_carre < prix_maison: top += [annonce] else: maison += [annonce] except: maison += [annonce] pass if id_type == id_immeuble: immeuble += [annonce] return top, appartement, maison, immeuble, prix_appartement, prix_maison
def sensor(): print("lancement schedule") dico_super = [{ "lien": "https://www.superimmo.com/achat/immeuble/haute-normandie,basse-normandie/a" + "-renover", "nombre": 1 }, { "lien": "https://www.superimmo.com/achat/haute-normandie" + ",basse-normandie/a-renover", "nombre": 1 }] madate = datetime.datetime.now() if madate.hour == 11: donnée_ville = Ville.select() donnée_logement = Logement.select() donnée_types_bien = Types_bien.select() df_ville = pd.DataFrame(list(donnée_ville.dicts())) df_ville.to_excel("ville.xlsx") df_logement = pd.DataFrame(list(donnée_logement.dicts())) df_logement.to_excel("logement.xlsx") df_types_bien = pd.DataFrame(list(donnée_types_bien.dicts())) df_types_bien.to_excel("type_bien.xlsx") liens_recherche = liens_super(dico_super) liste_dico = recuperation_superimmo(liens_recherche) nouvelles_villes = insert_bien(liste_dico) try: recuperation_prix2(nouvelles_villes) except: pass else: verification() return
def recuperation_ville(): villes = Ville.select() return villes
def admin(): villes = Ville.select() df = pd.DataFrame(list(villes.dicts())) tables = df.values.tolist() return render_template("admin.html",tables=tables)
def insert_bien(liste_dico): liste_ville = [] nouvelle_villes = [] #recuperation des donnees contenues dans la tables villes query = Ville.select() for v in query : if v.nom not in liste_ville: liste_ville += [v.nom] for d in liste_dico: try : prix, prix_metre_carre, surface = calcul(d["prix"], d["prix_metre"]) if prix != None: prix = float(prix) else: prix = 0 if prix_metre_carre != None: prix_m = prix_metre_carre else: prix_m = 0 if surface != None: surface = int(surface) else: surface = 0 if d["ville"][-1] == " ": ville = d["ville"][:-1] else : ville = d["ville"] ville = ville.replace("'"," ") if ville not in liste_ville: liste_ville += [ville] nouvelle_ville = Ville.create(nom = ville) #la liste nouvelle_villes permet de récuperer les donnees #de cette ville par la suite nouvelle_villes += [nouvelle_ville] datep = d["date"] datep = datep.replace(" ","") datep = datep.replace("/","") datep = datetime.datetime.strptime(datep, "%d%m%Y").date() datec = datetime.datetime.now() query = "call insert_biens('"+ville+"','"+d['cp']+"','" query += d['quartier']+"','"+d['dpe']+"','"+d['energie']+"','" query += d['description'].replace("'","?").replace("%","$")+"','"+str(d['annee'])+"','"+d['taxe_f'] query +="','"+ d['contact']+"','"+str(datep)+"','"+d['lien']+"','"+str(prix)+"','" query += str(surface) +"','"+str(prix_m)+"','"+str(d['id_type'])+"','"+str(datec)+"','" query += str(d['nb_chambre'])+"','"+d['cave'] +"','"+d['place']+"','"+d['surface_t'] query += "','"+d['ext']+ "')" db.execute_sql(query) except Exception as error : print(error) pass return nouvelle_villes