En aquesta pràctica he millorat el “cervell” del meu xatbot. He passat d’un sistema que només llegia el que jo li escrivia en fitxers, a un sistema de WebScraping que és capaç de llegir tot el meu portafolis sol.

1. D’on veníem? (Codi del trimestre passat)

Al principi, el xatbot era molt limitat. Si jo volia que sabés alguna cosa nova, havia de crear un fitxer .json a mà i pujar-lo. Era una feina molt pesada i lenta.

Aquest era el codi antic:

CÀRREGA DE DADES MANUAL (Mètode antic)
def carregar_dades():
docs = [‘Lanparty.json’, ‘Faq.json’, ‘Normativa.json’]
resum = “”
for d in docs:
if os.path.exists(d):
with open(d, ‘r’, encoding=’utf-8′) as f:
resum += f.read()
return resum


🚀 L’evolució del meu Xatbot: De fitxers fixos a l’exploració web

En aquesta pràctica he millorat el “cervell” del meu xatbot. He passat d’un sistema que només llegia el que jo li escrivia en fitxers, a un sistema de WebScraping que és capaç de llegir tot el meu portafolis sol.

1. D’on veníem? (Codi del trimestre passat)

Al principi, el xatbot era molt limitat. Si jo volia que sabés alguna cosa nova, havia de crear un fitxer .json a mà i pujar-lo. Era una feina molt pesada i lenta.

Aquest era el codi antic:

Python

# CÀRREGA DE DADES MANUAL (Mètode antic)
def carregar_dades():
    docs = ['Lanparty.json', 'Faq.json', 'Normativa.json']
    resum = ""
    for d in docs:
        if os.path.exists(d):
            with open(d, 'r', encoding='utf-8') as f:
                resum += f.read()
    return resum

2. El gran canvi: El Crawler Recursiu (BeautifulSoup)

Ara he programat un Crawler. És com un robot que entra a la meva web (ajaimes.inscastellbisbal.net) i va clicant tots els enllaços que troba per llegir-ho tot. Faig servir BeautifulSoup per “netejar” la web: treu els anuncis, els menús i els botons, i es queda només amb el text important.

Com m’ha ajudat la IA? La IA m’ha ensenyat a fer servir una cosa anomenada while. Això fa que el bot no s’avorreixi: mentre trobi pàgines noves, les va llegint fins a arribar al límit que jo li hagi posat (per exemple, 260 pàgines).

Prompt que he fet servir:

“Necessito un codi que en lloc de llegir fitxers JSON, entri a la meva web i busqui tots els links que hi ha per llegir el text de cada pàgina automàticament.”

3. Programació de seguretat (Try-Except i Timeouts)

Internet és complicat i de vegades les pàgines fallen. Perquè el meu programa no es trenqui, he afegit “escuts de seguretat”:

  • Try-Except: Si un link està trencat, el bot no “peta”, simplement m’avisa i passa al següent.
  • Timeout: Si una pàgina tarda massa a carregar (més de 10 segons), el bot la deixa estar i continua.
CODI ACTUAL: El Crawler automàtic
while to_visit and len(visited) < MAX_PAGES:
url = to_visit.pop()
try:
res = requests.get(url, timeout=10, verify=False)
soup = BeautifulSoup(res.text, ‘html.parser’)
# Netegem el text de la web
page_text = ‘ ‘.join(soup.get_text().split())
all_text += f”\n— PÀGINA: {url} —\n{page_text}\n”
except Exception as e:
print(f”Error a {url}: {e}”)

4. Resultat final i connexió amb la IA

Tota la informació que el bot ha llegit a la meva web es guarda en una variable. Després, li passem aquesta variable al model Gemini de Google amb unes instruccions perquè sàpiga que ha de respondre com si fos el meu assistent personal.

Com m’ha ajudat la IA? M’ha ajudat a solucionar errors de seguretat (com el CORS) i a fer que el bot ignori fotos o PDFs que no pot llegir, fent que el programa sigui molt més intel·ligent.