# Pywikibot/weblinkchecker.py

El script weblinkchecker.py de Pywikibot está diseñado para verificar los enlaces externos en las páginas de un proyecto Wikimedia. Su propósito es identificar enlaces rotos o inaccesibles, alertando a los editores para que los revisen o actualicen. Este script es útil en el mantenimiento continuo de artículos, ya que ayuda a garantizar la fiabilidad de los enlaces externos, mejorando la calidad de la información referenciada.

## Sección teórica

weblinkchecker.py funciona revisando cada enlace externo en una página específica o en una lista de páginas proporcionada, enviando solicitudes HTTP para comprobar si los enlaces siguen siendo accesibles. Si encuentra un enlace roto (por ejemplo, si el servidor responde con un error 404 o 500), lo reporta y genera un archivo de registro. Este proceso es fundamental en proyectos colaborativos como Wikipedia, donde la verificación manual de enlaces sería inviable debido a la cantidad de contenido.
Internamente, el script se comunica con los servidores web a través de solicitudes HTTP, y su funcionamiento está basado en la biblioteca requests de Python. El script utiliza el caché de Pywikibot para evitar múltiples verificaciones del mismo enlace en poco tiempo, optimizando su rendimiento.

## Requisitos previos

Antes de usar el script, los usuarios deben asegurarse de tener Pywikibot correctamente configurado y autenticado en un proyecto Wikimedia. Los pasos previos incluyen:
* Instalación de Pywikibot y configuración de la cuenta de usuario en Wikimedia.
* Tener acceso a un archivo de configuración de Pywikibot que incluya las credenciales necesarias.
* Entender cómo funcionan los comandos básicos de Pywikibot.
Es recomendable haber trabajado previamente con scripts de Pywikibot para tener una comprensión básica del entorno.

## Guía paso a paso

* Abrir la terminal y navegar al directorio de Pywikibot:
* Ejecutar el script weblinkchecker.py en una página específica. Para verificar los enlaces externos de una sola página, puedes usar el siguiente comando:
* Ejemplo práctico. Si deseas revisar los enlaces externos de la página de Wikipedia sobre «Python (lenguaje de programación)», ejecutarías:
* Verificación de múltiples páginas. También puedes revisar varias páginas creando una lista de títulos en un archivo de texto y ejecutando el script con esa lista:
* Revisar los resultados: Los enlaces rotos o inaccesibles se reportarán en la terminal y se guardarán en un archivo de registro, generalmente en el formato .log, ubicado en el directorio de trabajo.

## Ejercicio práctico
### Tarea

Usar weblinkchecker.py para revisar una lista de 5 artículos de Wikipedia con enlaces externos. Identificar al menos un enlace roto y reflexionar sobre las siguientes preguntas:
* ¿Qué tipo de error generó el enlace roto? (¿404, 500, etc.?)
* ¿Cuál sería tu próximo paso como editor? ¿Reemplazar el enlace? ¿Buscar una nueva fuente?

### Paso adicional

Modifica el script para que ignore los enlaces con errores 503 (servicio no disponible), ya que estos suelen ser temporales.

## Opciones avanzadas y parámetros

El script weblinkchecker.py ofrece varias opciones avanzadas que permiten ajustar su comportamiento. Aquí algunos ejemplos:
* Ignorar errores temporales: Si no deseas que el script reporte errores 503, puedes ejecutar el siguiente comando:
* Controlar el intervalo entre las verificaciones: Para evitar sobrecargar los servidores, puedes configurar un intervalo entre las solicitudes HTTP. Por ejemplo:
* Verificar solo los enlaces nuevos: Si quieres revisar solo los enlaces añadidos recientemente:

## Resolución de problemas comunes

* Error: Could not retrieve page. Este error puede deberse a problemas con la conexión a Internet o al servidor de Wikimedia. Asegúrate de que tienes una conexión estable y que el sitio web de Wikimedia no esté caído.
* Enlaces reportados como rotos, pero accesibles en el navegador: Esto puede suceder si el servidor del enlace bloquea las solicitudes automáticas. En estos casos, intenta acceder manualmente al enlace y, si es accesible, considera marcarlo como temporalmente inaccesible o agregar una nota en el artículo.
* Tiempo de ejecución excesivo. Si el script tarda mucho en revisar las páginas, puedes ajustar el parámetro -timeout para reducir el tiempo máximo de espera en cada solicitud:

## Discusión y reflexión

* ¿Cómo podríamos mejorar el script weblinkchecker.py para hacerlo más eficiente o adaptable a diferentes proyectos Wikimedia?
* ¿Es siempre recomendable eliminar un enlace roto? ¿Qué alternativas podrían ser útiles, como el uso de un servicio de archivos de internet (p. ej. Wayback Machine)?

## Conclusión

Hemos explorado cómo utilizar weblinkchecker.py para verificar enlaces externos en páginas de Wikimedia. Este script es esencial para mantener la integridad de los artículos, asegurando que los enlaces externos proporcionen información accesible. Al finalizar esta guía, los lectores deberían ser capaces de ejecutar el script en proyectos propios, ajustar sus parámetros para tareas avanzadas y resolver problemas comunes. Para más información, consulta la documentación oficial de Pywikibot.