Un outil puissant et tres rapide pour extraire et classifier tous les liens d'un site web avec une analyse récursive en profondeur.
- Fonctionnalités
- Installation
- Utilisation
- Classification des liens
- Structure des résultats
- Exemples
- Configuration avancée
- Dépannage
- Contribution
- Licence
- 🚀 Scraping récursif : Exploration en profondeur des sites web
- 📂 Classification automatique : Organisation des liens par type (HTML, documents, images, etc.)
- 🔍 Détection intelligente : Différenciation entre liens internes et externes
- 📊 Statistiques détaillées : Rapport complet sur les liens trouvés
- 💾 Export JSON : Sauvegarde structurée des résultats
- 🛡️ Gestion SSL : Support des sites HTTPS avec certificats invalides
- ⚡ Performance optimisée : Headers réalistes pour éviter les blocages
- 🎯 Filtrage intelligent : Exclusion automatique des liens non pertinents
- Go 1.16 ou supérieur
- Git
- Cloner le repository
git clone https://github.com/alaminedione/web-link-scraper.git
cd web-link-scraper- Compiler le projet
go mod tidy
go build -o link-scraper main.go./link-scraper <URL> [max_depth] [output_folder]| Paramètre | Description | Valeur par défaut |
|---|---|---|
URL |
L'URL du site web à analyser | Obligatoire |
max_depth |
Profondeur maximale de récursion | 1 |
output_folder |
Dossier de sauvegarde des résultats | ./scraping_results |
Scraping simple (profondeur 1)
./link-scraper https://example.comScraping en profondeur
./link-scraper https://example.com 3Scraping avec dossier de sortie personnalisé
./link-scraper https://example.com 2 ./mes-resultatsLe scraper classe automatiquement les liens trouvés dans les catégories suivantes :
- Extensions :
.html,.htm,.php,.asp,.aspx,.jsp - Pages web classiques et dynamiques
- Extensions :
.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx - Fichiers bureautiques et documents
- Extensions :
.jpg,.jpeg,.png,.gif,.svg,.webp - Tous types d'images web
- Extensions :
.js,.mjs,.ts - Fichiers JavaScript et TypeScript
- Extensions :
.css,.scss,.sass,.less - Fichiers de style
- Extensions :
.mp4,.mp3,.avi,.mov,.wav - Fichiers audio et vidéo
- Extensions :
.zip,.rar,.7z,.tar,.gz - Fichiers compressés
- Tous les autres types de fichiers
Les résultats sont sauvegardés dans un dossier horodaté :
scraping_results/
└── example_com_20240127_143022/
├── summary.json # Résumé complet
├── html_pages.json # Liste des pages HTML
├── documents.json # Liste des documents
├── images.json # Liste des images
├── scripts.json # Liste des scripts
├── stylesheets.json # Liste des CSS
├── multimedia.json # Liste des médias
└── archives.json # Liste des archives
{
"base_url": "https://example.com",
"total_links": 150,
"internal_links": ["..."],
"external_links": ["..."],
"classified_links": {
"html_pages": [...],
"documents": [...],
"images": [...]
},
"category_summary": {
"html_pages": 45,
"documents": 12,
"images": 78
},
"statistics": {
"pages_visited": 25,
"execution_time": "1m23s",
"max_depth_reached": 3
},
"timestamp": "2024-01-27 14:30:22"
}🚀 Starting ultra-fast scraping of: https://example.com
📊 Maximum depth: 2
💾 Output directory: ./scraping_results
--------------------------------------------------
🔗 Testing connection to https://example.com...
✅ Connection successful (Status: 200)
🔍 [Depth 0] Scraping: https://example.com
✅ Page loaded successfully: https://example.com
📊 Total of 45 links found on this page
🔍 [Depth 1] Scraping: https://example.com/about
✅ Page loaded successfully: https://example.com/about
📊 Total of 23 links found on this page
==================================================
📊 DETAILED STATISTICS
==================================================
🌐 Website: https://example.com
⏱️ Execution Time: 15.2s
📄 Pages Visited: 15
🔗 Total Links: 234
🏠 Internal Links: 189
🌍 External Links: 45
📊 Max Depth Reached: 2
📂 LINKS BY CATEGORY:
📄 Html_pages: 67
📑 Documents: 23
🖼️ Images: 89
⚙️ Scripts: 12
🎨 Stylesheets: 8
🎬 Multimedia: 5
💾 Results saved to: ./scraping_results/example_com_20240127_143022
✅ Scraping completed successfully!
Pour ajouter ou modifier les catégories de fichiers, éditez la variable fileExtensions dans le code :
var fileExtensions = map[LinkCategory][]string{
CategoryHTML: {".html", ".htm", ".php"},
CategoryDocument: {".pdf", ".doc", ".docx"},
// Ajoutez vos extensions ici
}Pour modifier le timeout des requêtes HTTP :
client := &http.Client{
Transport: tr,
Timeout: 30 * time.Second, // Modifier ici
}Erreur SSL/TLS
- Le scraper ignore automatiquement les erreurs de certificat SSL
- Pour désactiver cette fonctionnalité, modifiez
InsecureSkipVerify: false
Timeout sur sites lents
- Augmentez la valeur du timeout dans la configuration du client HTTP
Blocage par le serveur
- Le scraper utilise des headers réalistes pour éviter la détection
- Vous pouvez ajouter un délai entre les requêtes si nécessaire
Les contributions sont les bienvenues ! Pour contribuer :
- Fork le projet
- Créez votre branche (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Développé avec ❤️ en Go