Spaces:
Sleeping
Sleeping
Analyse Détaillée du Projet Scrap-Dji
1. Vue d'ensemble de l'Architecture
Le projet Scrap-Dji est une plateforme modulaire conçue pour la collecte, le traitement et l'indexation de contenus panafricains. L'architecture suit une approche pipeline classique :
- Collecte (
/scraper) : Utilise divers outils (Scrapy, Newspaper3k, Snscrape, Selenium) pour extraire des données brutes de sites web, réseaux sociaux et documents. - Traitement (
/parser) : Nettoyage HTML, dédoublonnage par hashage, et structuration des données. - Stockage (
/db&/storage) : Hybride entre relationnel (PostgreSQL pour la structure) et NoSQL (MongoDB pour la flexibilité). - Indexation (
/indexer) : Double indexation pour la recherche textuelle (Typesense/Meilisearch) et sémantique (Qdrant). - Exposition (
/api&/frontend) : API FastAPI et une interface de recherche minimaliste.
2. Réponses à vos Questions Spécifiques
🧠 Que peut-on faire concrètement avec les données ?
Une fois les données scrapées, les possibilités sont vastes :
- Moteur de recherche souverain : Créer un portail de recherche spécialisé sur les thématiques africaines.
- Analyse de tendances (OSINT) : Suivre les sujets brûlants sur les réseaux sociaux et dans la presse de différents pays africains.
- Entraînement d'IA : Utiliser les textes pour fine-tuner des modèles de langage (LLM) sur des contextes ou langues africaines.
- Veille médiatique : Automatiser la surveillance de sources spécifiques pour des rapports quotidiens.
📊 Quelles sont les données récupérées ?
D'après les modèles (db/models.py), le projet capture :
- Identifiants : UUID unique pour chaque document.
- Contenu : Titre, texte intégral, langue, tags.
- Métadonnées : Auteur, pays d'origine, date de publication, type de document (article, social, PDF, image).
- Source : URL d'origine (essentiel pour la traçabilité).
- Relations : Liens vers des versions antérieures du texte (historisation) et chemins vers les images téléchargées.
🔄 Reprise du scraping et doublons
Oui, le script gère la reprise sans répétition.
Dans scraper/main.py (ligne 108), la méthode save_document vérifie si l'URL existe déjà en base (source_url).
- Si l'URL existe : il crée une nouvelle version du texte (
DocumentVersion) mais ne recrée pas le document principal. - Pour Mongo, Typesense et Qdrant, le code utilise des opérations
upsert(mise à jour si existe, sinon insertion), ce qui garantit l'absence de doublons identiques.
💻 Configuration sans installation locale (Windows)
Comme vous n'avez pas Mongo/Typesense/Qdrant installé, voici les alternatives :
- Docker (Recommandé) : C'est le plus simple. Installez Docker Desktop et utilisez un fichier
docker-compose.ymlpour lancer tous les services en une commande. - Cloud (Gratuit/Freemium) :
- MongoDB : Utilisez MongoDB Atlas.
- Typesense : Typesense Cloud.
- Qdrant : Qdrant Cloud.
- Désactivation temporaire : Vous pouvez modifier
scraper/main.pypour commenter les appels aux indexeurs que vous ne possédez pas encore.
⚡ Ressources et Performance
Le scraper sera-t-il gourmand ?
- CPU/RAM : Le scraping de base est léger. Par contre, si vous utilisez Selenium pour des sites dynamiques ou SpaCy pour l'enrichissement NLP, la consommation grimpera significativement.
- Réseau : Dépend de
SCRAPER_CONCURRENT_REQUESTS(actuellement 16). 16 requêtes simultanées est raisonnable pour une connexion standard. - Stockage : Prévoyez de l'espace si vous téléchargez beaucoup d'images.
3. Configuration Git recommandée
Pour éviter de commiter vos secrets et votre environnement, assurez-vous que votre .gitignore contient :
# Environnement virtuel
venv/
.venv/
env/
# Secrets et config
.env
sources.json
# Données locales
storage_data/
logs/
data/
temp/
datasets/
db/*.sqlite
# Python
__pycache__/
*.py[cod]
*$py.class
4. Analyse de l'état actuel (Détails)
- Force : Architecture très propre et modulaire. Le choix d'une double base (Postgres/Mongo) et d'un double moteur de recherche est très pro.
- Points à améliorer :
- L'API (
api/main.py) est encore vide (ne fait pas de vraie recherche). - Le frontend est ultra-basique (uniquement JSON brut).
- Le mode
dry-run(test sans sauvegarde) n'est pas encore implémenté.
- L'API (