Programació del WebScraping
🧠 Justificació i reflexió: De base de dades estàtica a dinàmica
He implementat un sistema de web scraping per transformar el meu WordPress en una base de dades dinàmica que alimentarà el XatBot. Aquesta decisió respon a una anàlisi crítica de les necessitats del projecte:
- De contingut estàtic a dinàmic: En lloc de mantenir manualment un fitxer de coneixement, el scraper actualitza automàticament la base de dades del xatbot cada cop que publico contingut nou, sense esforç addicional.
- Ètica del scraping: He implementat delays de 0,5 segons entre peticions per respectar la infraestructura del servidor i evitar ser identificat com a atac. Aquesta pràctica és fonamental per mantenir la bona relació amb els serveis web.
- Robustesa del sistema: He incorporat gestió d'errors exhaustiva (try-except), timeouts de 10 segons i verificació de codis d'estat HTTP per garantir que l'script continuï funcionant encara que alguna pàgina falli.
- Integritat de les dades: L'ús d'un sistema de cache (set d'URLs visitades + hash de contingut) evita duplicats i garanteix que cada pàgina es processi una sola vegada.
📈 Millores implementades respecte a una versió bàsica
📄 Versió bàsica
- Scraper lineal
- Delay simple
- Timeout bàsic
- Try-except genèric
- JSON simple
⭐ Versió millorada (Tarik Aberdane)
- ✅ Scraper recursiu amb cua (
deque) - ✅ Delay dinàmic (0,5s + jitter aleatori)
- ✅ Timeout configurable amb reintents (retry)
- ✅ Excepcions específiques (ConnectionError, Timeout)
- ✅ JSON amb metadades (data_scraped, versió)
- ✅ Filtratge avançat d'etiquetes (h1, h2, h3, p, li)
- ✅ Cache amb hash de contingut
1. Lògica de Scraping i Profunditat BeautifulSoup + Recursivitat
Scraper recursiu que navega per tota la jerarquia del WordPress
He implementat un scraper recursiu amb BeautifulSoup que utilitza una cua de treball (deque) per explorar totes les pàgines del meu WordPress. A diferència d'un scraper lineal, aquest mètode garanteix que no es perdi cap pàgina, fins i tot en estructures complexes.
2. Automatització i Estructura JSON Escalable + Cache
Bolcat automàtic a JSON amb sistema de verificació de duplicats
El text extret es bolca automàticament en un fitxer JSON estructurat. He implementat un sistema de cache basat en hash de contingut (MD5) per evitar duplicats. L'estructura inclou metadades importants per facilitar la traçabilitat.
3. Robustesa: Delays i Gestió d'Errors Timeouts + Retry + Excepcions
Sistema avançat per garantir l'estabilitat del scraping
He implementat tres capes de robustesa per garantir que l'script no s'aturi davant de cap problema:
- Delays ètics (0,5s + jitter aleatori): Delay base amb petit jitter per evitar patrons recognoscibles i no saturar el servidor.
- Timeouts configurats (10 s): Cada petició té un límit de temps per evitar que l'script es quedi penjat.
- Gestió d'excepcions específiques: Diferencia entre errors de connexió, timeouts, errors HTTP (404, 500) i errors inesperats.
- Sistema de reintents: Si una petició falla per timeout, es reintenta fins a 3 vegades abans de continuar.
4. Iteració i Co-programació amb IA 3 Iteracions + Prompts refinats
Procés de millora contínua amb ajuda de la IA
He usat la IA (Gemini) com a copilot per generar, millorar i documentar el codi. El procés ha constat de 3 iteracions principals:
Scraper bàsic amb BeautifulSoup i navegació lineal.
Feedback IA: "Afegeix recursivitat i sistema de cache."
Scraper recursiu amb cua i verificació de duplicats.
Feedback IA: "Millora la gestió d'errors i afegeix reintents."
Versió final amb jitter, timeouts, JSON amb metadades.
Feedback IA: "Documenta el codi i crea README/CHANGELOG."
5. Documentació del Repositori README + CHANGELOG + Commits
Documentació professional en Markdown amb historial de commits
Evidències – Captures i visualitzacions del procés
Documentació visual de cada fase del WebScraping
Execució del Scraper a Google Colab
✓Sortida real de l'script mostrant les pàgines extretes.
✓249 pàgines del WordPress processades correctament.
Estructura del fitxer JSON generat
✓JSON amb metadades: versió, data, total de pàgines.
✓249 entrades amb URL, títol i contingut estructurat.
Comparativa de delays implementats
✓Gràfic propi comparant sense delay, delay fix i delay amb jitter.
✓El jitter aleatori és la solució més ètica i efectiva.
Gestió d'errors en temps real
✓Sortida de l'script gestionant 404, timeouts i errors de connexió.
✓El sistema de reintents recupera la connexió automàticament.
Procés d'iteració amb IA
✓3 iteracions documentades: de bàsic a versió final robusta.
✓Cada iteració incorpora el feedback de la IA.
Historial de commits a GitHub
✓4 commits detallats que mostren l'evolució del scraper.
✓Traçabilitat completa des del fork fins a la versió final.
✅ Compliment integral de la rúbrica
deque, filtratge de tags h1/h2/h3/p/li i eliminació de brossa.
main · 4 commits · 2026 |
🌐 taberdane.inscastellbisbal.net
Programació del WebScraping · BeautifulSoup · Python · JSON · GitHub
