Obtener scripts de una web con Python

Obtener scripts de una página web con Python es muy sencillo aplicando la técnica de web scraping gracias a dos módulos, Beautiful Soup y Urllib3.

Si a√ļn no conoces de que va esto del web scraping te recomiendo visitar este enlace ūüßź

Qué es un script de una web

Antes de meternos de lleno a programar para obtener los scripts de una web con Python conviene conocer que es lo que vamos a obtener.

Un script es un programa insertado dentro del documento HTML y que es interpretado y ejecutado por el navegador del usuario.

Estos scripts permiten crear p√°ginas din√°micas, modificar el comportamiento normal del navegador, validar formularios, realizar peque√Īos efectos visuales, etc…

Sin embargo, conviene recordar que se ejecutan en el navegador del usuario y no en la máquina donde estén alojadas, por lo que no podrán realizar cosas como manejar bases de datos. Para realizar estas acciones se utilizan otras tecnologías como Perl o PHP.

El primer lenguaje usado para crear scripts para páginas web fue JavaScript de Netscape. Nació con la versión 2.0 de este navegador y con sintaxis algo parecida a Java. Su utilidad y el casi absoluto monopolio que entonces ejercía Netscape en el mercado de navegadores permitieron que se popularizara y extendiera tanto su uso.

Instalar Beautiful Soup y urllib3

La instalación de estos módulos lo vimos más detenidamente en artículo anterior, pero básicamente hay que usar el administrador de paquetes de Python (pip), ejecutando un simple comando.

Puedes ver los comandos de cada una de las bibliotecas en los siguiente enlaces:

Algoritmo para obtener scripts de una p√°gina web con Python

Antes de comenzar te recomiendo ver algunos ejemplos más sencillos si eres nuevo en el manejo de estas librerías.

Cuando hayamos comprendido como podemos obtener datos de una web, consiguiendo diferentes etiquetas HTML (puedes verlas todas aquí), podemos centrarnos en obtener la etiqueta que nos interesa en este artículo, que es la script.

La etiqueta script tiene diferentes atributos, como pasa en el resto de etiquetas HTML, pero en nuestro caso nos interesa src, porque este atributo contiene el enlace de los diferentes scripts que queremos obtener.

Con lo cual, lo que vamos a hacer es obtener el enlace a los scripts de una web realizando los siguientes pasos:

  1. Designar la url de la que queremos obtener el HTML.
  2. Realizar la petición HTTP.
  3. Recibir la respuesta a la petición.
  4. Obtener el HTML a partir de la respuesta a la petición.
  5. Obtener los elementos que contengan la etiqueta script.
  6. Extraer el atributo src de todos los elementos obtenidos en el punto anterior.

En el siguiente código podemos ver una implementación de los pasos explicados anteriormente:

from bs4 import BeautifulSoup
import urllib3


def get_scripts(url):
    """ Devuelve los scripts de la url que se introduzca """
    try:
        urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

        http = urllib3.PoolManager()
        r = http.request("GET", url)
        soup = BeautifulSoup(r.data, "html5lib")
        list_scripts = []

        for s in soup.find_all('script'):
            if s.get('src'):
                list_scripts.append(s.get('src'))

        return list_scripts

    except Exception as e:
        print('Se ha producido un error: \n', e)

Para utilizarlo solo habría que llamar a al función y realizar las operaciones que se quieran con la lista que nos ha retornado. A continuación, se muestra un ejemplo, en el cual simplemente se imprimen los elementos obtenidos:

scripts = get_scripts(
    'https://www.python.org/about/gettingstarted/')
    
for script in scripts:
    print(script)

 

Deja un comentario