def ali_express_article(url) : els = [] """ Ali express possede deux formatage de ses articles selon la page pour certaines item d'autre list-item donc je verifie les deux condition si la premiere ne me retourne rien je passe au second """ # articles = connexion.connexion(url,"div","class","item") etablir une connexion a la page de facon normale articles = connexion.connexion(url,"div","class","item",True,True) # connexion anonyme et avec un navigateur if articles == []: # articles = connexion.connexion(url,"li","class","list-item") etablir une connexion a la page de facon normale articles = connexion.connexion(url,"li","class","list-item",True,True) # connexion anonyme et avec un navigateur if articles is not []: for item in articles : result = {} if item.find("img") : result["image"] = item.find("img")['src'] result["libelle"] = item.find("img")['alt'] if item.find("div",attrs={"class":"info"}).find("span",attrs={"class":"value"}): result["prix"] = item.find("div",attrs={"class":"info"}).find("span",attrs={"class":"value"}).text print(result) els.append(result) return els
def ikea_get_article(url): results = [] liens = ikea_lien() if url in liens: links = connexion.connexion(url, "div", "class", "product-compact__spacer") elif ikea_get_key_uri(url) in liens: links = connexion.connexion(ikea_get_key_uri(url), "div", "class", "product-compact__spacer") else: raise Exception("L'url recherche n'existe pas") for link in links: obj = {} if link.find('img'): obj["image"] = link.find('img')['src'] if link.find('span', attrs={'class': "product-compact__name"}): obj["nom"] = link.find('span', attrs={ 'class': "product-compact__name" }).text.strip() if link.find('span', attrs={'class': "product-compact__type"}): obj["type"] = link.find('span', attrs={ 'class': "product-compact__type" }).text.strip() if link.find('span', attrs={'class': "product-compact__description"}): obj["description"] = link.find('span', attrs={ 'class': "product-compact__description" }).text.strip() if link.find('span', attrs={'class': "product-compact__price"}): obj["prix"] = link.find('span', attrs={ 'class': "product-compact__price" }).text.strip() if link.find('span', attrs={'class': "product-compact__ratings"}): obj["avis"] = link.find('span', attrs={ 'class': "product-compact__ratings" }).text.strip() results.append(obj) return results
def createTable(): #on commence par initialiser la connexion et le curseur conn = connexion() cursor = conn.cursor() #on drop les tables si elles existent déjà cursor.execute("DROP TABLE IF EXISTS activities") cursor.execute("DROP TABLE IF EXISTS installations") cursor.execute("DROP TABLE IF EXISTS equipements") #string creer_table_acti qui contient la requête sql de la table activities si elle n'existe pas avec ActCode qui correspond au code de l'activite et ActLib qui correspond au libélé de l'activité creer_table_acti = "CREATE TABLE IF NOT EXISTS activities (ActCode INT PRIMARY KEY NOT NULL, ActLib TEXT);" #string creer_table_equip qui contient la requête sql de la table equipements si elle n'existe pas avec InsNumeroInstall qui est le numero de l'installation, InsNom qui est le nom de l'installation et EquiId qui est le numéro unique de l'equipement creer_table_equip = "CREATE TABLE IF NOT EXISTS equipements(InsNumeroInstall INT PRIMARY KEY NOT NULL, InsNom TEXT, EquipId INT);" #string creer_table_install qui contient la requête sql de la table installations si elle n'existe pas avec des numInstall qui correspond au numéro d'installation, nomUsuelInstall qui correspond au nom usuel de l'installation, adresse, code_postal, ville, latitude, longitude creer_table_install = "CREATE TABLE IF NOT EXISTS installations(numInstall INT PRIMARY KEY NOT NULL, nomUsuelInstall TEXT, adresse TEXT, code_postal INT, ville TEXT, latitude FLOAT, longitude FLOAT);" #on envoie les requetes à la base de donnée cursor.execute(creer_table_acti) cursor.execute(creer_table_equip) cursor.execute(creer_table_install) #on sauvegarde les changements et on ferme la connexion conn.commit() conn.close()
def ikea_main(): result = [] items = connexion.connexion('https://www.ikea.com/fr/fr/', 'li', "class", "desktop-menu__item") for item in items: obj = {} obj["titre"] = item.find('span', attrs={ 'class': 'desktop-menu__title' }).text obj["souscat"] = [] if item.find('ul', attrs={'class': 'desktop-menu__level1'}): sousCat = item.findAll( 'li', attrs={'class': 'desktop-menu__level1__item'}) for cat in sousCat: if cat.find('ul', attrs={"class": "desktop-menu__level2"}): links = cat.findAll('a') for link in links: l = {} l["nom"] = link.text l["lien"] = link['href'] obj["souscat"].append(l) result.append(obj) else: continue return result
def insertEquipement(equipement): conn = connexion() cursor = conn.cursor(prepared=True) insertQuery = "INSERT INTO equipements(InsNumeroInstall, InsNom, EquipId) VALUES (?, ?, ?)" cursor.execute(insertQuery,(equipement.num, equipement.nom, equipement.id)) conn.commit() conn.close()
def get_website_data(url): results = [] sections = connexion.connexion(url, 'li', "class", "octopus-pc-item") for section in sections: results.append(section) return results
def insertInstallation(installation): conn = connexion() cursor = conn.cursor(prepared=True) insertQuery = "INSERT INTO installations(numInstall, nomUsuelInstall, adresse, code_postal, ville, latitude, longitude) VALUES (?, ?, ?, ?, ?, ?, ?)" cursor.execute(insertQuery, (installation.numInstall, installation.nomUsuelInstall, installation.adresse, installation.code_postal, installation.ville, installation.latitude, installation.longitude)) conn.commit() conn.close()
def get_website_categorie(url): results = [] categories = connexion.connexion(url, 'div', "class", "popover-grouping") for categorie in categories: result = { "nom": categorie.find('h2', attrs={ "class": "popover-category-name" }).text, "sousCategories": [{ sousCat.text: sousCat['href'] } for sousCat in categorie.findAll('a', attrs={"class": "nav_a"})] } results.append(result) return results
def allActivities(): liste_activities = [] #On créer une liste vide db, cursor = connexion() cursor.execute("SELECT * FROM activities") #On lance la requête pour récupérer les données de activities res = cursor.fetchall() #On met les données dans une variable for row in res: #On parcours notre variable liste_activities.append(Activity(row[0], row[1])) #On ajoute les données dans notre liste_activities print(liste_activities) db.commit() db.close() #activity = json.dumps(liste_activities) #On met la liste_activities en format JSON #print(activity) return liste_activities #On retourne notre liste
def insertActivity(activity): #on insctancie d'abord la connexion à la base de donnée conn = connexion() #on instancie le cursor en lui indiquant que les requêtes que nous allons lui envoyer seront de types "prepared" cursor = conn.cursor(prepared=True) #premiere partie de la requête insertQuery = "INSERT INTO activities(ActCode, ActLib) VALUES (?, ?)" #Les valeurs que l'ont insère cursor.execute(insertQuery,(activity._ActCode, activity._ActLib)) #test: insertQuery = "INSERT INTO activities(ActCode, ActLib) VALUES (?, ?)" #cursor.execute(insertQuery,(111111,"Nicolas")) #attendu: un ligne actCode = 111111 et actLib = Nicolas #sauvegarde et fereture de la connexion conn.commit() conn.close()
#all_account[1] = "account_2" #all_account[2] = "account_3" #all_account[3] = "account_4" # ### DEFINE 1 name_av = connexion.multi_errors_unfo(sys.argv) password = sys.argv[2] print("...:::UNFOLLOWING:::...") ## init driver driver = connexion.init() ##connexion to twitter with name and password connexion.connexion(driver, name_av, password) ##get number of following and followers nb_followers = get_informations.get_nb_followers(driver) nb_following = get_informations.get_nb_following(driver) ## ERROR FAIL NOT FOUND 4:43AM if (nb_followers == "1" and nb_following != "1"): nb_followers = nb_following nb_following = "1" ##ERRORS IF WE HAVE 0 FOLLOWERS if nb_following == "1" and nb_followers == "1": print("Ratio is not big enough ! We cannot unfollow now, sorry.")
def ali_express_init(): url = "https://fr.aliexpress.com" categories = connexion.connexion(url,"dl","class","cl-item") return categories