-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDataScraper.py
More file actions
40 lines (35 loc) · 1.78 KB
/
DataScraper.py
File metadata and controls
40 lines (35 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import pandas as pd
import time
from constants import *
from WebScraperUtils import WebScraperUtils
class DataScraper:
def __init__(self, chemin_liens=LINKS_FILE_PATH):
self.chemin_liens = chemin_liens
self.utils = WebScraperUtils()
self.donnees_appartements = []
def extraire_donnees(self):
"""Extraire les données de chaque lien d'appartement et les stocker dans une liste de dictionnaires."""
with open(self.chemin_liens, 'r') as f:
liens = f.readlines()
for lien in liens:
self.utils.driver.get(lien.strip())
time.sleep(2)
donnee = {
"titre": self.utils.obtenir_texte_ou_nan(XPATH_TITLE),
"prix": self.utils.obtenir_texte_ou_nan(XPATH_PRICE,"Prix Non Specifié"),
"emplacement": self.utils.obtenir_texte_ou_nan(XPATH_LOCATION,"Emplacement Non Specifié"),
"type_de_vente": self.utils.obtenir_texte_ou_nan(XPATH_TYPE_DE_VENTE , "A louer"),
"salon": self.utils.obtenir_texte_ou_nan(XPATH_SALON,),
"chambre": self.utils.obtenir_texte_ou_nan(XPATH_CHAMBRE),
"toilette": self.utils.obtenir_texte_ou_nan(XPATH_TOILETTE),
"surface": self.utils.obtenir_texte_ou_nan(XPATH_SURFACE,"SURFACE NON SPECIFIE"),
"lien": lien.strip()
}
self.donnees_appartements.append(donnee)
self.utils.fermer_driver()
return self.donnees_appartements
def enregistrer_donnees_en_csv(self, chemin=DATA_CSV_PATH):
"""Enregistrer les données des appartements extraites dans un fichier CSV."""
df = pd.DataFrame(self.donnees_appartements)
df.to_csv(chemin, index=False)
print('Données enregistrées dans le fichier CSV.')