Referencia
- Blázquez-Ochando, M.; Prieto-Gutiérrez, J.J.; Ovalle-Perandones, M.A. (2025). Prompt engineering for bibliographic web-scraping. Scientometrics, 130(7), 3433-3453. https://doi.org/10.1007/s11192-025-05372-5
Comentario
Los catálogos bibliográficos almacenan millones de registros que constituyen una fuente invaluable para la investigación bibliométrica y documental. Sin embargo, no siempre es posible acceder a ellos mediante protocolos como OAI-PMH o SRU/SRW. En muchos casos, la única vía es el web-scraping: la extracción automatizada de datos desde las páginas web de los catálogos. Tradicionalmente, esta tarea requería conocimientos avanzados de programación y un proceso de desarrollo iterativo que podía extenderse durante días o semanas.
La irrupción de los grandes modelos de lenguaje (LLM) como ChatGPT ha abierto nuevas posibilidades. Pero, como hemos visto en anteriores entradas de este blog, la calidad de las respuestas de la IA depende en gran medida de cómo formulamos nuestras preguntas. De ahí surge la pregunta central de nuestra investigación: ¿Es posible diseñar un prompt que permita obtener, en una única interacción con la IA, un programa de web-scraping completamente funcional y adaptado a las particularidades de un catálogo bibliográfico?
La metodología: ingeniería de prompts estructurada
El artículo propone un método para diseñar prompts avanzados basado en cinco componentes esenciales:
- Definición del rol: indicar a la IA el papel que debe adoptar (en nuestro caso, programador especializado en web-scraping con PHP) y las competencias requeridas.
- Contexto y propósito: describir claramente el problema a resolver, el entorno de desarrollo (servidor Apache, PHP, MySQL) y el nivel de detalle esperado.
- Entradas y restricciones: especificar las funciones que debe utilizar (por ejemplo,
curlen lugar defile_get_contents), los métodos de selección de datos (como XPath) y las condiciones que debe respetar. - Ejemplos de entrada y salida: proporcionar fragmentos del código fuente de la página objetivo y mostrar cómo deberían extraerse los datos.
- Pasos detallados: desglosar el flujo de trabajo que debe seguir el programa, actuando como una guía procedimental que la IA puede seguir.
Este enfoque se apoya en técnicas reconocidas de prompt engineering como el Role Prompting (asignación de un rol especializado) y el Few-shot Prompting (aprendizaje a partir de ejemplos), combinadas con una estructura en markdown que facilita que la capa de atención de la IA retenga la información relevante.
Validación: el catálogo de la Biblioteca Nacional de España
Para probar la eficacia del método, seleccionamos como caso de estudio el catálogo datos.bne.es de la Biblioteca Nacional de España. Diseñamos dos tipos de prompt:
- Un prompt de control, formulado como una pregunta directa y abierta.
- Un prompt avanzado, construido según la metodología descrita.
Los resultados fueron concluyentes. El prompt de control generó un código que no funcionaba, basado en suposiciones incorrectas sobre la estructura HTML de los registros. El prompt avanzado, en cambio, produjo en una sola interacción un programa PHP completamente funcional, capaz de extraer los metadatos bibliográficos (título, autor, lugar de publicación, editorial, fecha, descripción física, etc.) con un nivel de precisión muy alto.
Escalado y pruebas de estrés
Un aspecto crucial de la investigación fue verificar que el código generado no solo funcionaba para un registro, sino que podía escalarse a decenas de miles. Para ello, utilizamos un segundo prompt (esta vez dirigido a Claude Sonnet 3.5, otra IA) que tomaba el código generado por ChatGPT y le añadía las funciones necesarias para:
- Conectarse a una base de datos MySQL.
- Iterar sobre los identificadores de los registros (más de 60.000 enlaces).
- Manejar valores nulos o vacíos.
- Insertar los datos en una tabla estructurada.
- Respetar una pausa de 3 segundos entre inserciones para no sobrecargar el servidor.
El programa resultante procesó 62.786 enlaces, de los cuales 7.313 resultaron ser errores 404 (páginas inexistentes) y se recogieron 55.473 registros válidos. La extracción se completó en 63 horas (incluyendo las pausas programadas), con una tasa efectiva de 66,76 registros por minuto y un índice de completitud promedio del 85,43% —lo que indica que, en general, los registros contienen una cantidad sustancial de información.
Discusión: implicaciones prácticas
Los resultados de este trabajo tienen varias implicaciones relevantes:
- Para los investigadores. La metodología desarrollada elimina la necesidad de contar con habilidades avanzadas de programación. Un investigador que necesite extraer datos de un catálogo bibliográfico puede, siguiendo la estructura propuesta, obtener un programa funcional en cuestión de horas, en lugar de semanas de desarrollo o de recurrir a costosas herramientas comerciales.
- Para bibliotecas y centros de documentación. La capacidad de generar scrapers a medida facilita tareas como la migración de datos entre sistemas, la sincronización de catálogos con repositorios nacionales o internacionales, o la identificación de inconsistencias en los registros. Es una alternativa viable cuando no se dispone de acceso a protocolos estandarizados o cuando los recursos técnicos son limitados.
- Para la enseñanza de la documentación. La prompt engineering se perfila como una competencia relevante en la formación de los futuros profesionales de la información. Saber formular instrucciones precisas a los modelos de lenguaje es, en sí mismo, una habilidad técnica que puede marcar la diferencia entre obtener resultados útiles o no.
Limitaciones y trabajo futuro
En el artículo también señala algunas limitaciones. El método se ha validado principalmente con el catálogo de la Biblioteca Nacional de España, aunque los principios deberían ser aplicables a otros catálogos. El código generado está limitado a PHP y al entorno Apache/MySQL, aunque es posible adaptarlo a otros lenguajes. Además, los resultados están ligados a las versiones específicas de los modelos utilizados (ChatGPT-4o y Claude Sonnet 3.5), y la evolución de estos modelos puede afectar al comportamiento de los prompts.
Entre las líneas de trabajo futuro se encuentran la ampliación del método a otros lenguajes de programación, la exploración de casos de uso en diferentes tipos de catálogos y la investigación de técnicas para mejorar aún más la precisión en la identificación de campos bibliográficos complejos.