File size: 6,700 Bytes
dfdddb1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
# FAQ - Scrap-Dji : Questions et Réponses

## 📊 Que puis-je faire avec les données scrapées ?

### Fonctionnalités principales :
1. **Recherche sémantique** : Trouver du contenu par similarité de sens
2. **Recherche par mots-clés** : Recherche classique par termes
3. **Filtrage géographique** : Contenus par pays/région africaine
4. **Analyse temporelle** : Évolution des sujets dans le temps
5. **Détection de langues** : Contenus en français, anglais, langues locales
6. **Analyse de sentiments** : Positif/négatif/neutre
7. **Extraction d'entités** : Personnes, organisations, lieux
8. **Génération de résumés** : Synthèse automatique des articles
9. **Détection de fake news** : Analyse de crédibilité
10. **API REST** : Interface pour applications tierces

### Exemples d'utilisation :
- **Journaliste** : Recherche d'articles sur un sujet spécifique
- **Chercheur** : Analyse de tendances médiatiques africaines
- **Développeur** : API pour application mobile/web
- **Analyste** : Rapports sur l'actualité africaine

## 📋 Quelles données sont récupérées ?

### Données extraites :
```json
{
  "titre": "Titre de l'article",
  "texte": "Contenu complet nettoyé",
  "source_url": "URL d'origine",
  "pays": "Sénégal",
  "langue": "fr",
  "type_document": "article|social|pdf|video",
  "auteur": "Nom de l'auteur",
  "date_publication": "2024-01-15",
  "tags": ["politique", "économie"],
  "images": ["url1", "url2"],
  "liens_externes": ["url1", "url2"],
  "métadonnées": {
    "longueur_texte": 1500,
    "nombre_mots": 250,
    "sentiment": "positif",
    "crédibilité": 0.85
  }
}
```

### Types de sources supportées :
- **Sites d'actualités** : Articles, éditoriaux, interviews
- **Réseaux sociaux** : Twitter, Facebook (via API)
- **Blogs** : Contenus personnels et professionnels
- **PDFs** : Documents officiels, rapports
- **Vidéos** : YouTube, Vimeo (métadonnées)
- **Podcasts** : Transcriptions et descriptions

## 🔄 Reprise du scraping après interruption

### ✅ Oui, le système évite les doublons !

**Mécanisme de détection :**
1. **Hash du contenu** : Chaque document a un hash unique
2. **URL de source** : Vérification par URL d'origine
3. **Timestamp** : Horodatage pour versioning
4. **Base de données** : Vérification en PostgreSQL/MongoDB

**Comportement :**
```python
# Si document existe déjà
if existing_document:
    # Création d'une nouvelle version
    new_version = DocumentVersion(
        document_id=existing.id,
        texte=new_content,
        date=datetime.now()
    )
    # Pas de doublon, juste mise à jour
else:
    # Nouveau document
    create_new_document()
```

**Avantages :**
- ✅ Pas de répétition des données
- ✅ Mise à jour des contenus modifiés
- ✅ Historique des versions
- ✅ Reprise automatique où ça s'est arrêté

## 🗄️ Configuration des bases de données

### PostgreSQL (Obligatoire)
```bash
# 1. Télécharger depuis https://www.postgresql.org/download/windows/
# 2. Installer avec les paramètres par défaut
# 3. Créer la base de données
createdb scrapdji

# 4. Configurer dans .env
POSTGRES_URI=postgresql://postgres:votre_mot_de_passe@localhost:5432/scrapdji
```

### MongoDB (Obligatoire)
```bash
# 1. Télécharger depuis https://www.mongodb.com/try/download/community
# 2. Installer MongoDB Community Server
# 3. Démarrer le service
net start MongoDB

# 4. Configurer dans .env
MONGO_URI=mongodb://localhost:27017
MONGO_DB=scrapdji
```

### Typesense (Optionnel - Recherche avancée)
```bash
# Installation via Docker (recommandé)
docker run -p 8108:8108 -v typesense-data:/data typesense/typesense:latest --data-dir /data --api-key=xyz

# Ou télécharger l'exécutable Windows
# https://github.com/typesense/typesense/releases
```

### Qdrant (Optionnel - IA/ML)
```bash
# Installation via Docker
docker run -p 6333:6333 qdrant/qdrant

# Ou télécharger l'exécutable
# https://github.com/qdrant/qdrant/releases
```

## 💾 Consommation des ressources

### Estimation des ressources :

**Scraping léger (10 sources) :**
- CPU : 5-10% (processeur moderne)
- RAM : 200-500 MB
- Disque : 1-5 GB/jour
- Réseau : 10-50 MB/source

**Scraping intensif (100+ sources) :**
- CPU : 20-40%
- RAM : 1-2 GB
- Disque : 10-50 GB/jour
- Réseau : 100-500 MB/source

### Optimisations :
```python
# Configuration optimisée dans .env
SCRAPER_DELAY=2                    # Délai entre requêtes
SCRAPER_CONCURRENT_REQUESTS=8      # Requêtes simultanées
SCRAPER_TIMEOUT=30                 # Timeout des requêtes
SCRAPER_RETRY_TIMES=3              # Nombre de tentatives
```

### Recommandations :
- **Débutant** : 5-10 sources, scraping toutes les heures
- **Intermédiaire** : 20-50 sources, scraping toutes les 30 minutes
- **Avancé** : 100+ sources, scraping en continu avec queue

## 🔧 Configuration Git

### Fichier .gitignore
```gitignore
# Environnement virtuel
venv/
env/
.venv/

# Variables d'environnement
.env
.env.local
.env.production

# Logs
logs/
*.log

# Données scrapées
storage_data/
data/
temp/

# Cache
__pycache__/
*.pyc
*.pyo
*.pyd
.Python

# IDE
.vscode/
.idea/
*.swp
*.swo

# OS
.DS_Store
Thumbs.db

# Base de données
*.db
*.sqlite

# Fichiers temporaires
*.tmp
*.temp
```

### Commandes Git recommandées :
```bash
# Initialiser le repository
git init

# Ajouter les fichiers de configuration
git add .gitignore
git add config.env.example
git add sources.json.example

# Premier commit
git commit -m "Initial commit - Configuration Scrap-Dji"

# Ajouter le code source
git add .
git commit -m "Ajout du code source Scrap-Dji"

# Créer une branche pour le développement
git checkout -b develop
```

## 🚀 Script de configuration automatique

```bash
# Script pour configurer tout automatiquement
python setup.py --auto

# Ou configuration manuelle
python setup.py --interactive
```

## 📊 Monitoring et métriques

### Métriques disponibles :
- **Documents traités** : Nombre total
- **Nouvelles sources** : Sources découvertes
- **Taux de succès** : Pourcentage de succès
- **Temps de traitement** : Durée par source
- **Erreurs** : Logs d'erreurs détaillés

### Dashboard (futur) :
- Interface web pour visualiser les métriques
- Graphiques en temps réel
- Alertes automatiques
- Export des données

## 🎯 Prochaines étapes recommandées

1. **Installation** : PostgreSQL + MongoDB
2. **Configuration** : .env et sources.json
3. **Test** : Lancement avec --dry-run
4. **Déploiement** : Scraping en production
5. **Optimisation** : Ajustement des paramètres
6. **Monitoring** : Surveillance des performances
7. **API** : Déploiement de l'API FastAPI
8. **Frontend** : Interface utilisateur web