Shell Script para mostrar todos los enlaces internos y externos desde una URL

Para establecer una jerarquía entre las páginas web o la información que los desarrolladores web utilizan para conectarlas todas, se denomina enlace de página web. Hay dos tipos de enlaces de páginas web: uno es un enlace interno y el otro es un enlace externo. Los enlaces internos son aquellos que vinculan una página disponible en el mismo sitio web para producir un ciclo en el sitio. A su vez, los enlaces externos son aquellos que enlazan con otro sitio web o dominio. Los enlaces externos juegan un papel vital en la clasificación de un sitio web en el motor de búsqueda. La mejora en el ranking del sitio web se puede ver aumentando la cantidad de enlaces externos a su sitio web. Aquí se nos pide que codifiquemos un script de shell que pueda imprimir todos estos enlaces en la pantalla del terminal. La única entrada proporcionada al script es la URL de la página web para la que necesitamos obtener todos los enlaces.

Nota: Se puede acceder a un sitio web de dos maneras: una usando un navegador web y la otra usando comandos de terminal que siguen protocolos limitados para acceder al sitio web. Los comandos de terminal tienen algunas limitaciones, por lo que también usaremos un navegador web basado en terminal, que nos ayudará a conectarnos a ese sitio web.

CLI:

Para la línea de comandos, vamos a utilizar la herramienta “lynx”. Lynx es un navegador web basado en terminal que no muestra imágenes ni otro contenido multimedia para que sea mucho más rápido que otros navegadores.

# sudo apt install lynx -y
Shell script genera todos los enlaces internos y externos de la URL del sitio web

Instalar navegador de terminal Lynx

Veamos los enlaces de la página del proyecto GeeksForGeeks. Pero antes debemos entender las opciones presentes en el navegador lynx.

  • -dump: Esto volcará la salida formateada del documento.
  • -listonly: Esto enumerará todos los enlaces presentes en la URL mencionada. Esto se usa con -dump.

Ahora aplica estas opciones:

# lynx -dump -listonly https://www.geeksforgeeks.org/computer-science-projects/?ref=shm
Shell script genera todos los enlaces internos y externos de la URL del sitio web

volcar todos los enlaces en la terminal

O redirija esta salida de terminal a cualquier archivo de texto:

# lynx -dump -listonly https://www.geeksforgeeks.org/computer-science-projects/?ref=shm > links.txt

Ahora vea los enlaces usando los comandos cat:

# cat links.txt

Shell script output all the Internal and External links from the website url

Guión de concha

Fácilmente podríamos hacer todo el trabajo realizado anteriormente en un archivo utilizando un lenguaje de secuencias de comandos, y también sería mucho más fácil y divertido. Hay diferentes formas de obtener los enlaces, como expresiones regulares. Usaremos expresiones regulares con el comando «sed». Primero, descargaremos la página web como texto y luego aplicaremos la expresión regular en el archivo de texto.

Ahora crearemos un archivo usando el editor nano. La explicación del código se da a continuación.

# nano returnLinks.sh

Shell script output all the Internal and External links from the website url

A continuación se muestra la implementación:

#!/bin/bash
# Give the  url
read urL

# wget will now download this webpage in the file named webpage.txt
# -O option is used to concate the content of the url to the file mentioned.
wget -O webpage.txt "$urL"

# Now we will apply  stream editor to filter the url from the file.
sed -n 's/.*href="\([^"]*\).*/\1/p' webpage.txt

Dar permiso al archivo:

Para ejecutar un archivo usando la terminal, primero lo hacemos ejecutable cambiando los modos de accesibilidad del archivo. Aquí 777 representa lectura, escritura y ejecutable. Hay algunos otros permisos que podrían usarse para limitar los archivos.

# chmod 777 returnLinks.sh

Ahora ejecute el script de shell y proporcione la URL:

# ./returnLinks.sh
Shell script genera todos los enlaces internos y externos de la URL del sitio web

script de shell devuelve enlaces

También puede almacenar esto en un archivo externo:

El guión será el mismo; solo la redirección de salida se agregará al comando del editor de flujo para que la salida se pueda almacenar en el archivo.

#!/bin/bash
#Give the  url
read urL
#wget will now download this webpage in the file named webpage.txt
wget -O webpage.txt "$urL"
#Now we will apply  stream editor to filter the url from the file.
# here we will use output redirection to a text file. All the other code is same.
sed -n 's/.*href="\([^"]*\).*/\1/p' webpage.txt  > links.txt  

Shell script output all the Internal and External links from the website url

Ahora abre el archivo links.txt

Ahora abriremos el archivo y veremos si todos los enlaces están presentes en el archivo o no.

# cat links.txt

Shell script output all the Internal and External links from the website url

Publicación traducida automáticamente

Artículo escrito por hemusharma196 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *