Spaces:
Sleeping
Sleeping
File size: 2,555 Bytes
efe4e84 875174b 5ec59ca efe4e84 5ec59ca efe4e84 5ec59ca efe4e84 78dae20 efe4e84 b7419c5 efe4e84 875174b efe4e84 875174b efe4e84 875174b efe4e84 92b42a1 efe4e84 875174b efe4e84 | 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 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()
|