• Skip to primary navigation
  • Skip to main content
  • Skip to footer
<>

<>

  • PLAN DE MARKETING DIGITAL

Cómo extraer el dominio y directorios de una url con VBA

Ser capaces de extraer el dominio y los directorios de una url rápidamente nos puede facilitar enormemente nuestro día a día. Más, cuando no hablamos de un par de url’s si no de decenas o cientos de miles.

Gracias a esto, cruzando datos con otras fuentes, podemos sacar métricas útiles como el número de enlaces que tiene un directorio, CTR promedio, errores 404…(por citar algunos ejemplos).

Índice:

  • Función para extraer el dominio
    • Código para extraer dominios
  • Función: extraer el 1º directorio
    • Código para extraer directorios
  • SIN UNA BUENA ESTRATEGIA ONLINE ESTÁS ABOCADO AL FRACASO

Para poder mostrar cómo funciona, vamos a scrapear los resultados de Google con el bookmarlet del que hablaba en otro artículo y volcaremos los datos sobre un excel.

Función para extraer el dominio

Para crear nuestra función personalizada en VBA que extraiga el dominio vamos a utilizar condicionales y las funciones: Like, InStr, Mid, Left y Split.

  • Like: para saber si contiene un string.
  • InStr: para calcular la posición de un string
  • Mid: para extraer desde una posición.
  • Left: para extraer desde la izquierda un nº de caracteres.
  • Split: para convertir la url en una matriz o array y extraer lo que queremos.

Código para extraer dominios

Copiamos y pegamos el siguiente código en nuestro entorno de desarrollo de VBA excel.

Function rcStrDomain(url As String) As String
    
    'Comprobamos si el parámetro url es verdaderamente una url
    If Left(url, 4) Like "http*" Then
           'Extraemos todo lo que va después de //
           url = Mid(url, InStr(url, "//") + 2)
        Else
           'Si no es una url, lo introducimos en la celda
           rcStrDomain = "No es una url"
           Exit Function
    End If
    'Comprobamos si el subdominio contiene las tres típicas www (o variaciones)
    If Left(url, 4) Like "[Ww][Ww][Ww0-9]." Then
        'De ser así, extraemos lo que va después de www (o variaciones)
        url = Mid(url, 5)
    End If
    'Finalmente, la función devuelve la cadena de texto hasta que se encuentra el primer /.
    rcStrDomain = Split(url, "/")(0)
    
End Function

Volvemos a nuestra hoja de excel y utilizamos la función creada pasándole como argumento la url:

=rcStrDomain(A2)

Función: extraer el 1º directorio

La cosa se complica, y es que para poder extraer los directorios de la url, además de condicionales y las funciones que hemos utilizado anteriormente, vamos a configurar un bucle For para poder analizar carácter por carácter y a utilizar la función Right (similar a Left).

Gracias al bucle podremos saber cuando una url contiene directorios (lo que implica que tiene que tener como mínimo 5 / ó 4 y que la url no termine en /).

Menudo lío… veámoslo con un par de ejemplos:

  • Url con 5 /: https://www.genesis.es/seguros-coche/particulares/. En este caso es evidente que al menos existe un directorio.
  • Url con 4 / que termina en /: https://www.genesis.es/seguros-coche/. En este caso nos encontramos una url sin directorios.
  • Url con 4 / que no termina en /: https://www.genesis.es/seguros-coche/particulares.php. En este caso si que existe un directorio.

Código para extraer directorios

Copiamos y pegamos el siguiente código y veamos como funciona.

Function rcStrDomain1Path(url As String) As String
    Dim intLenDomain As Integer
    Dim byNumSlash As Byte
    Dim i As Byte
    Dim strCaractUrl As String
    
    intLenDomain = Len(url)
    byNumSlash = 0
    
    If Left(url, 4) Like "http*" Then
            url = Mid(url, InStr(url, "//") + 2)
        Else
            rcStrDomain1Path = "No es una url"
            Exit Function
    End If
    
    If Left(url, 4) Like "[Ww][Ww][Ww0-9]." Then
        url = Mid(url, 5)
    End If
    
    'Creamos un bucle para comprobar carácter por carácter el nº de / que hay en url
    For i = 1 To intLenDomain
    
        strCaractUrl = Mid(url, i, 1)
        
        If (strCaractUrl = "/") Then byNumSlash = byNumSlash + 1
        'Si el nº de / en url es igual que 2 implica que la url tiene un directorio si no termina en /
        'Hay que recordar que el valor de url no es el del inicio, hemos quitado: http:// o
            'https://, www., ww., ww3.,...etc
        If (byNumSlash = 2) Then
            'En caso de que no termine en /, si que es un directorio
            If Right(url, 1) <> "/" Then
                'La diferencia está en el paréntesis final(1). Antes la función devolvía la
                    'cadena de texto hasta que se encontaba el pimer /, osea, (0).
                'Ahora devuelve la cadena que se encuentra entre el primer / y el segundo, osea, (1)
                rcStrDomain1Path = Split(url, "/")(1)
            
                Exit For
            End If
            
        End If
        
        'Si el nº de / en url es mayor 2 implica que la url tiene un directorio como mínimo
        If (byNumSlash > 2) Then

            rcStrDomain1Path = Split(url, "/")(1)
            
            Exit For
        End If
    
     Next i

End Function

Utilizamos nuestra nueva función:

=rcStrDomain1Path(A2)

Vemos como además de obtener los directorios, en caso de que alguna celda no contenga una url la función nos avisa correctamente.

Si quisiéramos extraer directorios de 2º, 3º… nivel simplemente hay que cambiar el último paréntesis (1) e ir añadiendo cifras: (2) para directorios de 2º nivel, (3) para tercer nivel y así sucesivamente.


Espero que el artículo te resulte de ayuda. Si te ha gustado, o si encuentras alguna errata o ves que algo no está bien explicado por favor deja un comentario. Aquí puedes aprender VBA Excel.

SIN UNA BUENA ESTRATEGIA ONLINE ESTÁS ABOCADO AL FRACASO

Aprende a hacer un plan de marketing y descarga nuestras plantillas.

Plan de Marketing Digital

Footer

¿Hablamos?

  • Contacto

Información

  • Nosotros
  • Blog

Recursos

  • Plan de marketing online
  • Expresiones regulares
  • Funnels de conversión
  • Excel para marketing
  • Bookmarklets para SEO
  • Guía VBA Excel

Copyright 2022 - Indexingdata . Servicios de optimización de negocios digitales - Políticas de privacidad  - Cookies