Contenidos
¿Interesado en aprender Python?
Después de comenzar a aprender Python a fines del año pasado, me encontré poniendo en práctica lo que he estado aprendiendo cada vez más para mis tareas diarias como profesional de SEO.
Esto abarca desde tareas bastante simples, como comparar cómo cosas como el recuento de palabras o los códigos de estado han cambiado con el tiempo, hasta piezas de análisis que incluyen enlaces internos y análisis de archivos de registro.
Además, Python ha sido de gran ayuda:
- Para trabajar con grandes conjuntos de datos.
- Para archivos que normalmente bloquearían Excel y requerirían análisis complejos para extraer información significativa.
Cómo Python puede ayudar con el SEO técnico
Python empodera a los profesionales de SEO de varias maneras debido a su capacidad para automatizar tareas repetitivas de bajo nivel que normalmente requieren mucho tiempo para completarse.
Esto significa que tenemos más tiempo (y energía) para dedicar a importantes trabajos estratégicos y esfuerzos de optimización que no se pueden automatizar.
También nos permite trabajar de manera más eficiente con grandes cantidades de datos para tomar decisiones más basadas en datos, lo que a su vez puede proporcionar valiosos retornos de nuestro trabajo y el de nuestros clientes.
De hecho, un estudio del McKinsey Global Institute encontró que las organizaciones basadas en datos tenían 23 veces más probabilidades de adquirir clientes y seis veces más probabilidades de retenerlos. study
También es muy útil para respaldar cualquier idea o estrategia que tenga porque puede cuantificarla con los datos que tiene y tomar decisiones basadas en eso, al mismo tiempo que tiene más poder de influencia al intentar implementar las cosas.
Agregar Python a su flujo de trabajo de SEO
La mejor manera de agregar Python a su flujo de trabajo es:
- Piense en lo que se puede automatizar, especialmente cuando se realizan tareas tediosas.
- Identifique cualquier laguna en el trabajo de análisis que está realizando o que ha completado.
Descubrí que otra forma útil de comenzar a aprender es utilizar los datos a los que ya tiene acceso y extraer información valiosa de ellos usando Python.
Así es como aprendí la mayoría de las cosas que compartiré en este artículo.
No es necesario aprender Python para convertirte en un buen profesional de SEO, pero si estás interesado en saber más sobre cómo puede ayudarte, prepárate para empezar.
Lo que necesitas para empezar
Para obtener los mejores resultados de este artículo, necesitará algunas cosas:
- Algunos datos de un sitio web (por ejemplo, un rastreo de su sitio web, datos de Google Analytics o Google Search Console).
- Un IDE (entorno de desarrollo integrado) para ejecutar código; para comenzar, recomendaría Google Colab o Jupyter Notebook.
- Una mente abierta Esto es quizás lo más importante, no tengas miedo de romper algo o cometer errores, encontrar la causa de un problema y las formas de solucionarlo es una gran parte de lo que hacemos como profesionales de SEO, por lo que aplicar esta misma mentalidad al aprendizaje.
1 Probar bibliotecas
Un buen lugar para comenzar es probar algunas de las muchas bibliotecas que están disponibles para usar en Python.
Hay muchas bibliotecas para explorar, pero tres que encuentro más útiles para tareas relacionadas con SEO son Pandas, Requests y Beautiful Soup.
pandas
Pandas es una biblioteca de Python que se utiliza para trabajar con datos de tablas y permite la manipulación de datos de alto nivel donde la estructura de datos clave es un DataFrame. Pandas
Los DataFrames son esencialmente la versión de Pandas de una hoja de cálculo de Excel; sin embargo, no se limitan a los límites de filas y bytes de Excel y también son mucho más rápidos y, por lo tanto, eficientes en comparación con Excel.
La mejor manera de comenzar con Pandas es tomar un CSV simple de datos, por ejemplo, un rastreo de su sitio web, y guardarlo en Python como un DataFrame.
Una vez que tenga este almacén, podrá realizar varias tareas de análisis diferentes, incluida la agregación, pivotación y limpieza de datos.
import pandas as pd df = pd.read_csv("/file_name/and_path") df.head
Peticiones
La siguiente biblioteca se llama Solicitudes y se utiliza para realizar solicitudes HTTP en Python. Requests
Utiliza diferentes métodos de solicitud, como GET y POST, para realizar una solicitud y los resultados se almacenan en Python.
Un ejemplo de esto en acción es una simple solicitud GET de URL, esto imprimirá el código de estado de una página, que luego se puede usar para crear una función simple de toma de decisiones.
import requests #Print HTTP response from page response = requests.get('https://www.deepcrawl.com') print(response) #Create decision making function if response.status_code == 200: print('Success!') elif response.status_code == 404: print('Not Found.')
También puede utilizar diferentes solicitudes, como encabezados, que muestran información útil sobre la página, como el tipo de contenido y un límite de tiempo para almacenar en caché la respuesta.
#Print page header response headers = response.headers print(headers) #Extract item from header response response.headers['Content-Type']
También existe la posibilidad de simular un agente de usuario específico, como el robot de Google, para extraer la respuesta que verá este robot específico al rastrear la página.
headers = {'User-Agent': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'} ua_response = requests.get('https://www.deepcrawl.com/', headers=headers) print(ua_response)
Hermosa sopa
La biblioteca final se llama Beautiful Soup, que se utiliza para extraer datos de archivos HTML y XML. Beautiful Soup
Se utiliza con mayor frecuencia para web scraping, ya que puede transformar un documento HTML en diferentes objetos de Python.
Por ejemplo, puede tomar una URL y utilizar Beautiful Soup, junto con la biblioteca de Solicitudes, extraer el título de la página.
#Beautiful Soup from bs4 import BeautifulSoup import requests #Request URL to extract elements from url= 'https://www.deepcrawl.com/knowledge/technical-seo-library/' req = requests.get(url) soup = BeautifulSoup(req.text, "html.parser") #Print title from webpage title = soup.title print(title)
Además, Beautiful Soup le permite extraer otros elementos de una página, como todos los enlaces href que se encuentran en la página.
for link in soup.find_all('a'): print(link.get('href'))
2 Segmentación de páginas
La primera tarea implica segmentar las páginas de un sitio web, que básicamente consiste en agrupar páginas en categorías que dependen de su estructura de URL o título de página.
Comience usando expresiones regulares simples para dividir el sitio en diferentes segmentos según su URL:
segment_definitions = [ [(r'\/blog\/'), 'Blog'], [(r'\/technical-seo-library\/'), 'Technical SEO Library'], [(r'\/hangout-library\/'), 'Hangout Library'], [(r'\/guides\/'), 'Guides'], ]
A continuación, agregamos una pequeña función que recorrerá la lista de URL y asignará a cada URL una categoría, antes de agregar estos segmentos a una nueva columna dentro del DataFrame que contiene la lista de URL original.
use_segment_definitions = True def segment(url): if use_segment_definitions == True: for segment_definition in segment_definitions: if re.findall(segment_definition[0], url): return segment_definition[1] return 'Other' df['segment'] = df['url'].apply(lambda x: get_segment(x))
También existe una forma de segmentar páginas sin tener que crear los segmentos manualmente, utilizando la estructura de URL. Esto tomará la carpeta que se encuentra después del dominio principal para categorizar cada URL.
Nuevamente, esto agregará una nueva columna a nuestro DataFrame con el segmento que se generó.
def get_segment(url): slug = re.search(r'https?:\/\/.*?\//?([^\/]*)\/', url) if slug: return slug.group(1) else: return 'None' # Add a segment column, and make into a category df['segment'] = df['url'].apply(lambda x: get_segment(x))
3 Relevancia de redireccionamiento
Esta tarea es algo que nunca habría pensado en hacer si no supiera lo que era posible usar Python.
Después de una migración, cuando se implementaron redireccionamientos, queríamos saber si el mapeo de redireccionamiento era preciso revisando si la categoría y la profundidad de cada página habían cambiado o permanecían iguales.
Esto implicó realizar un rastreo del sitio antes y después de la migración y segmentar cada página según su estructura de URL, como se mencionó anteriormente.
Después de esto, utilicé algunos operadores de comparación simples, que están integrados en Python, para determinar si la categoría y la profundidad de cada URL habían cambiado.
df['category_match'] = df['old_category'] == (df['redirected_category']) df['segment_match'] = df['old_segment'] == (df['redirected_segment']) df['depth_match'] = df['old_count'] == (df['redirected_count']) df['depth_difference'] = df['old_count'] - (df['redirected_count'])
Como se trata esencialmente de un script automatizado, se ejecutará en cada URL para determinar si la categoría o la profundidad ha cambiado y generará los resultados como un nuevo DataFrame.
El nuevo DataFrame incluirá columnas adicionales que mostrarán Verdadero si coinciden, o Falso si no coinciden.
Y al igual que en Excel, la biblioteca Pandas le permite pivotar datos basándose en un índice del DataFrame original.
Por ejemplo, para obtener un recuento de cuántas URL tenían categorías coincidentes después de la migración.
Este análisis le permitirá revisar las reglas de redireccionamiento que se han establecido e identificar si hay categorías con una gran diferencia antes y después de la migración que podrían necesitar más investigación.
4 Análisis de enlaces internos
Analizar los enlaces internos es importante para identificar a qué secciones del sitio están más enlazadas, así como para descubrir oportunidades para mejorar los enlaces internos en un sitio.
Para realizar este análisis, solo necesitamos algunas columnas de datos de un rastreo web, por ejemplo, cualquier métrica que muestre enlaces de entrada y salida entre páginas.
Nuevamente queremos segmentar estos datos para determinar las diferentes categorías de un sitio web y analizar la vinculación entre ellas.
internal_linking_pivot['followed_links_in_count'] = (internal_linking_pivot['followed_links_in_count']).apply('{:.1f}'.format) internal_linking_pivot['links_in_count'] = (internal_linking_pivot2['links_in_count']).apply('{:.1f}'.format) internal_linking_pivot['links_out_count'] = (internal_linking_pivot['links_out_count']).apply('{:.1f}'.format) internal_linking_pivot
Las tablas dinámicas son realmente útiles para este análisis, ya que podemos pivotar sobre la categoría para calcular el número total de enlaces internos para cada una.
Python también nos permite realizar funciones matemáticas para obtener un recuento, suma o media de cualquier dato numérico que tengamos.
5 Análisis de archivos de registro
Otra pieza de análisis importante está relacionada con los archivos de registro y los datos que podemos recopilar para ellos en varias herramientas diferentes.
Algunas ideas útiles que puede extraer incluyen identificar qué áreas de un sitio son las más rastreadas por el robot de Google y monitorear cualquier cambio en la cantidad de solicitudes a lo largo del tiempo.
Además, también se pueden utilizar para ver cuántas páginas no indexables o rotas siguen recibiendo visitas de bots para abordar cualquier problema potencial con el presupuesto de rastreo.
Nuevamente, la forma más sencilla de realizar este análisis es segmentar las URL según la categoría en la que se encuentran y usar tablas dinámicas para generar un recuento o promedio para cada segmento.
Si puede acceder a los datos históricos del archivo de registro, también existe la posibilidad de monitorear cómo las visitas de Google a su sitio web han cambiado con el tiempo.
También hay excelentes bibliotecas de visualización disponibles en Python, como Matplotlib y Seaborn, que le permiten crear gráficos de barras o gráficos de líneas para trazar los datos sin procesar en gráficos fáciles de seguir que muestran comparaciones o tendencias a lo largo del tiempo.
6 Fusionar datos
Con la biblioteca Pandas, también existe la posibilidad de combinar DataFrames en función de una columna compartida, por ejemplo, URL.
Algunos ejemplos de combinaciones útiles para fines de SEO incluyen la combinación de datos de un rastreo web con datos de conversión recopilados en Google Analytics.
Esto hará que cada URL coincida y muestre los datos de ambas fuentes dentro de una tabla.
Combinar datos de esta manera ayuda a proporcionar más información sobre las páginas de mejor rendimiento, al mismo tiempo que identifica las páginas que no funcionan tan bien como se esperaba.
Tipos de fusión
Hay un par de formas diferentes de fusionar datos en Python; la opción predeterminada es una fusión interna donde la fusión se producirá en valores que existen en los DataFrames izquierdo y derecho.
Sin embargo, también puede realizar una combinación externa que devolverá todas las filas del DataFrame izquierdo y todas las filas del DataFrame derecho y las hará coincidir siempre que sea posible.
Además de una combinación derecha o izquierda que fusionará todas las filas coincidentes y mantendrá aquellas que no coincidan si están presentes en la combinación derecha o izquierda respectivamente.
7 Tendencias de Google
También hay una gran biblioteca disponible llamada PyTrends, que esencialmente le permite recopilar datos de Google Trends a escala con Python. PyTrends
Hay varios métodos API disponibles para extraer diferentes tipos de datos.
Un ejemplo es realizar un seguimiento del interés de búsqueda a lo largo del tiempo para hasta 5 palabras clave a la vez.
Otro método útil es devolver consultas relacionadas para un tema determinado; esto mostrará una puntuación de Google Trends entre 0 y 100, así como un porcentaje que muestra cuánto interés ha aumentado la palabra clave con el tiempo.
Estos datos se pueden agregar fácilmente a un documento de Google Sheet para mostrarlos en un panel de Google Data Studio.
En conclusión
Estos proyectos me han ayudado a ahorrar mucho tiempo en el trabajo de análisis manual y, al mismo tiempo, me han permitido descubrir aún más conocimientos a partir de todos los datos a los que tengo acceso.
Espero que esto te haya dado algo de inspiración para proyectos de SEO con los que puedas comenzar para impulsar tu aprendizaje de Python.
Me encantaría saber cómo te va si decides probar alguno de estos. He incluido todos los proyectos anteriores en este repositorio de Github. this Github repository
Más recursos:
Créditos de imagen
Todas las capturas de pantalla tomadas por el autor, diciembre de 2020
Leer el articulo original en Search Engine Journal.