Programació del WebScraping

Aquest projecte permet extreure automàticament tota la informació de la web d’en Martí, guardar-la en un fitxer JSON i utilitzar la intel·ligència artificial (Gemini) per respondre preguntes basant-se en aquestes dades.

1. Instal·lació de Llibreries

Primer, preparem l’entorn amb les eines necessàries: flask per al servidor, beautifulsoup4 per llegir el web, i google-genai per connectar amb la IA.

Python:

!pip install -q -U google-genai flask-cors pyngrok beautifulsoup4 requests
!pip install requests==2.32.4

2. Configuració de Seguretat (Secrets)

Connectem amb l’API de Google Gemini i el token de Ngrok mitjançant les claus guardades al Google Colab.

Python:

try:
    client = genai.Client(api_key=userdata.get('Api_gemini'))
    ngrok.set_auth_token(userdata.get('Token'))
    print("✅ API i ngrok connectats.")
except Exception as e:
    print(f"❌ ERROR SECRETS: {e}")

3. L’Extractor Total (Web Scraper)

Aquesta funció és el “robot” que navega per la web d’en Martí.

  • Funció: Visita fins a 200 pàgines del domini.

  • Filtre: Ignora imatges, PDFs i la part interna de WordPress.

  • Dades: Guarda el títol i el text de cada apartat en una llista anomenada dades_marti.

4. Cercador Intel·ligent i Lògica IA

Abans d’enviar la pregunta a la IA, el programa busca quines pàgines del web tenen paraules clau relacionades amb la pregunta de l’usuari.

  1. Cercador: Compara la pregunta amb el contingut guardat i tria les 3 millors pàgines.

  2. IA (Gemini): Li donem un rol a la IA: “Ets l’assistent del portafolis d’en Martí” i li passem només la informació real del web per evitar que inventi coses.

Python:

def demanar_a_ia(pregunta):
    # Seleccionem la informació més rellevant
    pagines_filtrades = trobar_pagines_rellevants(pregunta, maxim=3)
    # Creem el context per a la IA
    context = "Respon en català basant-te NOMÉS en aquesta informació real d'en Martí..."
    # Generem la resposta
    response = client.models.generate_content(model="gemini-2.5-flash-lite", contents=f"{context}\n\nPregunta: {pregunta}")
    return response.text

5. Servidor Flask i Ngrok

Finalment, aixequem un servidor que escolta les preguntes que arriben des del codi JavaScript (el teu front-end).

  • Ruta /ask: Rep la pregunta, la processa i torna la resposta en format JSON.

  • Ngrok: Crea una URL pública (ex: https://abcd-123.ngrok-free.app) perquè el web pugui parlar amb el Python.