Spaces:
Sleeping
Sleeping
| import time | |
| import os | |
| import gradio as gr | |
| import pandas as pd | |
| from selenium import webdriver | |
| from selenium.webdriver.common.by import By | |
| from selenium.webdriver.chrome.service import Service | |
| from selenium.webdriver.chrome.options import Options | |
| from webdriver_manager.chrome import ChromeDriverManager | |
| # Configuration Selenium | |
| def setup_selenium(): | |
| options = Options() | |
| options.add_argument("--headless") # Exécution en arrière-plan (optionnel) | |
| options.add_argument("--disable-gpu") | |
| options.add_argument("--window-size=1920,1080") | |
| # Définir un dossier de téléchargement personnalisé | |
| download_dir = os.path.expanduser("~/Downloads") # Modifier selon besoin | |
| prefs = {"download.default_directory": download_dir} | |
| options.add_experimental_option("prefs", prefs) | |
| service = Service(ChromeDriverManager().install()) | |
| driver = webdriver.Chrome(service=service, options=options) | |
| return driver, download_dir | |
| # Fonction pour télécharger le fichier avec Selenium | |
| def download_echa_xls(): | |
| driver, download_dir = setup_selenium() | |
| try: | |
| url = "https://echa.europa.eu/fr/candidate-list-table" | |
| driver.get(url) | |
| time.sleep(5) # Attendre le chargement de la page | |
| # Trouver et cliquer sur le bouton "Export to XLS" | |
| export_button = driver.find_element(By.ID, "_disslists_WAR_disslistsportlet_exportButtonXLS") | |
| export_button.click() | |
| time.sleep(10) # Attendre le téléchargement | |
| # Vérifier si le fichier a été téléchargé | |
| files = os.listdir(download_dir) | |
| xls_files = [f for f in files if f.endswith(".xls") or f.endswith(".xlsx")] | |
| if xls_files: | |
| return os.path.join(download_dir, xls_files[-1]) | |
| else: | |
| return None | |
| except Exception as e: | |
| return f"❌ Erreur Selenium : {e}" | |
| finally: | |
| driver.quit() | |
| # Fonction pour afficher le fichier dans Gradio | |
| def process_echa_data(): | |
| file_path = download_echa_xls() | |
| if not file_path or "Erreur" in file_path: | |
| return "❌ Erreur : Impossible de télécharger le fichier." | |
| df = pd.read_excel(file_path, engine="openpyxl") | |
| return df | |
| # Interface Gradio | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 📄 Téléchargement des Substances ECHA avec Selenium") | |
| btn = gr.Button("📥 Télécharger et Afficher les Données") | |
| output = gr.Dataframe() | |
| btn.click(fn=process_echa_data, inputs=[], outputs=[output]) | |
| # Lancer l'application Gradio | |
| if __name__ == "__main__": | |
| demo.launch() | |