Un modeste script Python pour extraire des numéros SIRET ou SIREN directement depuis les sites web des entreprises. 🚀
Conçu par Vigilantia, cet outil vise à simplifier les vérifications de conformité et les validations d'entreprise. 🛠️
Avec la version 1.2, nous avons amélioré la précision de la détection et ajouté la prise en charge des technologies web modernes. 🌟
Visitez notre site nous sommes fièrement basés à Metz 🇫🇷
- Fonctionnalités
- Prérequis
- Installation
- Utilisation
- Logique Détaillée
- Exemple de Flux de Travail
- Processus de Développement
- FAQ
- Contribuer
- Licence
-
Détection Avancée :
- Identification précise des pages légales (ex. "Mentions légales", "CGU").
- Reconnaissance intelligente des chemins localisés (
/fr/terms
,/mentions-legales
).
-
Exploration Optimisée :
- Exploration priorisée : détection des URLs pertinentes dans le sitemap ou le footer.
- Gestion des sites modernes utilisant des frameworks JavaScript (Nuxt.js, React).
-
Extraction de Données :
- Numéros SIRET/SIREN et emails, même dans des formats complexes ou obfusqués.
- Association logique entre les identifiants et les entreprises détectées.
-
Technologies Modernes :
- Support des sites avec contenu dynamique grâce à Selenium.
- Exploration contextuelle des frames et iframes.
-
Sortie Structurée :
- Résultats au format CSV pour une intégration facile avec d'autres outils.
-
Open-Source : Entièrement Open-Source et inspiré d'un repo de Beta-Gouv 🤝.
- Python : 3.9+
- Bibliothèques :
requests
beautifulsoup4
lxml
selenium
- Clonez le dépôt :
git clone https://github.com/vigilantia/siret-extractor.git
cd siret-extractor
- Installez les dépendances :
pip install -r requirements.txt
- Tout est prêt ! 🎉
Préparez un fichier CSV (par exemple, input.csv
) avec une colonne nommée domain
. Cette colonne doit lister les domaines à traiter.
Note : Si le fichier CSV contient des domaines malformés ou manquants, le script journalisera chaque ligne problématique et ignorera ces entrées. Assurez-vous que vos données d'entrée sont propres pour éviter les résultats manquants.
Exemple de CSV :
domain
example.com
business.fr
example.org
- Ouvrez le script (
siret_extractor.py
) dans votre IDE préféré.
Note : Si vous rencontrez des problèmes tels que des dépendances manquantes, assurez-vous d'avoir installé toutes les bibliothèques requises en exécutant :
pip install -r requirements.txt
Vérifiez également que l'interpréteur Python est correctement configuré dans les paramètres de votre IDE.
- Insérez dans le dossier votre fichier .csv avec les domaines correctement formatés :
input_file = "input.csv"
output_file = "output.csv"
- Exécutez le script. 🏃♂️
- Vérifiez le fichier
output.csv
pour les résultats. 📊
Exécutez le script comme suit :
python siret_extractor.py input.csv output.csv
Les résultats seront stockés dans output.csv
avec la structure suivante :
domain,result
example.com,12345678901234
business.fr,None
example.org,98765432109876
Le script suit une approche pas à pas :
-
Traitement de l'URL de Base :
- Correction automatique des URLs mal formées.
- Tentatives sur plusieurs variantes (
https://
,http://
,www.
).
-
Récupération du Sitemap :
- Analyse du fichier
robots.txt
pour localiser le sitemap. - Si absent, tente d’accéder directement à
domain.com/sitemap.xml
.
- Analyse du fichier
-
Exploration des Pages Internes :
- Exploration intelligente des liens internes, avec priorité donnée aux footers.
-
Extraction des Identifiants :
- Utilisation de regex avancés pour capturer les numéros et emails.
-
Gestion des Erreurs :
- Journalisation des erreurs (par ex. domaine invalide, contenu inaccessible).
- Saisissez les domaines dans
input.csv
. 📋 - Exécutez le script. 🛠️
- Validez les résultats dans
output.csv
. ✅
-
Crawling Efficace :
- Filtrage par mots-clés pour prioriser les pages pertinentes.
- Réduction du temps d’exploration avec des limites configurables.
-
Gestion des Erreurs :
- Log détaillé des échecs (connexion, URL introuvable).
- Mécanismes de reprise pour éviter les interruptions.
- Rotation de l’agent utilisateur pour éviter les blocages.
- Gestion des proxies pour préserver l’anonymat.
flowchart TD
A[Départ 🚀] --> B[Déterminer l'URL de Base]
B -->|Succès| C[Récupérer le Sitemap 📜]
B -->|Échec| D[Journaliser l'Erreur ⚠️]
C --> E[Analyser le Sitemap 🔗]
E -->|Candidats Trouvés| G[Filtrer les URLs 🗂️]
E -->|Pas de Candidats| F[Explorer la Page d'Accueil 🔍]
F --> G
G -->|Candidats Valides| H[Extraire les SIRET/SIREN ✨]
G -->|Pas de Candidats Valides| I[Extraire depuis la Page d'Accueil 🏠]
H --> J[Résultats en Sortie 📤]
I --> J
J --> K[Fin 🏁]
Q : Qu'est-ce qu'un SIRET/SIREN ?
A : Le SIREN (9 chiffres) et le SIRET (14 chiffres) sont des identifiants uniques pour les entreprises en France. 🇫🇷
Q : Comment le script gère-t-il les erreurs ?
A : Les erreurs telles que les problèmes de connexion ou les domaines invalides sont journalisées et ignorées sans interrompre l'exécution. 🛡️
Q : Puis-je utiliser ce script pour des sites non français ?
A : Le script est optimisé pour les identifiants légaux français, mais peut être adapté à d'autres motifs. 🌍
Q : Le script peut-il fonctionner sur des sites non français ? A : Oui, mais les modèles de détection sont optimisés pour les entreprises françaises.
Q : Puis-je modifier les paramètres d’exploration ?
A : Oui, les variables comme MAX_DEPTH
et TIMEOUT
sont configurables.
Nous accueillons les contributions ! 🎉 Veuillez forker le dépôt, apporter vos modifications et soumettre une pull request. 🛠️
Ce projet est sous licence MIT. Consultez le fichier LICENSE pour plus de détails.
Vigilantia – Développé à Metz avec passion. 🇫🇷