Saltar al contenido

Aproveche Python y Google Cloud para extraer información significativa de SEO de los datos de registro del servidor

febrero 13, 2020

[ad_1]

Para mi primer artículo sobre Search Engine Land, comenzaré citando a Ian Lurie:

El análisis del archivo de registro es un arte perdido. ¡Pero puede salvar tu trasero de SEO!

Palabras sabias

Sin embargo, obtener los datos que necesitamos de los archivos de registro del servidor suele llevar mucho tiempo:

  • Los archivos de registro enormes requieren tuberías de ingestión de datos robustas, una infraestructura confiable de almacenamiento en la nube y un sistema de consultas robusto
  • También se requiere un modelado de datos meticuloso para convertir los datos de registro críptico sin procesar en bits legibles, adecuados para el análisis y visualización de datos exploratorios

En el primer artículo de esta serie de dos partes, le mostraré cómo adaptar fácilmente sus análisis a conjuntos de datos más grandes y extraer información significativa de SEO de los registros de su servidor.

¡Todo esto con solo una pizca de Python y un toque de Google Cloud!

Aquí está nuestro plan de acción detallado:

# 1 – Comenzaré por darle un poco de contexto:

  • ¿Qué son los archivos de registro y por qué son importantes para el SEO?
  • Cómo ingresarlos
  • Por qué Python por sí solo no siempre lo corta cuando se trata de escanear registros del servidor

# 2 – Luego configuraremos las cosas:

  • Crear una cuenta de Google Cloud Platform
  • Cree un depósito de Google Cloud Storage para almacenar nuestros archivos de registro
  • Use la línea de comando para convertir nuestros archivos a un formato compatible para consultar
  • Transfiera nuestros archivos a Google Cloud Storage, manualmente y por programa

# 3 – Finalmente, vamos al corazón de Pythoning – vamos a:

  • ¡Busque nuestros archivos de registro con Bigquery, en Colab!
  • Cree un modelo de datos que haga que nuestros registros sin procesar sean más legibles
  • Cree columnas categóricas que mejorarán aún más nuestros análisis
  • Filtra y exporta nuestros resultados a .csv

En la segunda parte de esta serie (disponible más adelante este año), discutiremos técnicas de modelado de datos más avanzadas en Python para evaluar:

  • Volumen de exploración de bot
  • Recoge el desperdicio de presupuesto
  • Análisis de URL duplicado

¡También le mostraré cómo agregar y unir datos de registro a los datos de Search Console y crear visualizaciones interactivas con Plotly Dash!

Excitado? ¡Vamos a crackear!

Requisitos del sistema

Utilizaremos Google Colab en este artículo. No hay requisitos específicos o problemas de compatibilidad con versiones anteriores aquí, ya que Google Colab está en la nube.

Archivos descargables

  • El cuaderno Colab está disponible aquí.
  • Los archivos de registro se pueden descargar de Github: 4 archivos de muestra de 20 MB cada uno, que abarcan 4 días (1 día por archivo)

¡Tenga la seguridad de que la computadora portátil ha sido probada con millones de líneas a la velocidad del rayo y sin ningún obstáculo!

Preámbulo: ¿Qué son los archivos de registro?

Aunque no quiero conversar demasiado sobre qué son los archivos de registro, por qué pueden ser invaluables para SEO, etc. (diablos, ¡ya hay muchos artículos geniales sobre el tema!), aquí hay algunos antecedentes.

Un archivo de registro del servidor registra cada solicitud de contenido en su servidor web.

Cada. Soltera. A.

En sus formas más crudas, los registros son ilegibles, por ejemplo, aquí hay algunas líneas crudas de un servidor web Apache:

Intimidante, ¿no es así?

Los registros sin procesar deben "limpiarse" para su análisis; aquí es donde entra el modelado de datos. Pero más sobre eso más adelante.

Si bien la estructura de un archivo de registro depende principalmente del servidor (Apache, Nginx, IIS, etc.), tiene atributos persistentes:

  • IP del servidor
  • Fecha / hora (también llamada marca de tiempo)
  • Método (GET o POST)
  • URI
  • Código de estado HTTP
  • Agente de usuario

Por lo general, se pueden incluir atributos adicionales, como:

  • Remitente: la URL que "vinculó" al usuario a su sitio
  • URL redirigida, cuando ocurre una redirección
  • Tamaño del archivo enviado (en bytes)
  • Tiempo requerido: el tiempo requerido para procesar una solicitud y enviar su respuesta

¿Por qué los archivos de registro son importantes para el SEO?

Si no sabes por qué importan, lee esto. ¡Tiempo gastado sabiamente!

Acceda a sus archivos de registro

Si no sabe por dónde comenzar, su mejor opción es preguntarle a su desarrollador web / desarrollador DevOps (cliente) si pueden otorgarle acceso a registros de servidor sin formato a través de FTP, idealmente sin ningún tipo de filtrado.

Aquí hay instrucciones generales para encontrar y administrar datos de registro en los tres servidores más populares:

Utilizaremos archivos Apache sin procesar en este proyecto.

¿Por qué los pandas por sí solos no son suficientes cuando se trata de analizar periódicos?

Pandas (una herramienta de manipulación de datos de código abierto construida con Python) es bastante ubicua en la ciencia de datos.

Es esencial cortar y cortar estructuras de datos tabulares, y el mamífero funciona de maravilla cuando los datos se guardan en la memoria.

En otras palabras, unos pocos gigabytes. Pero no terabytes.

Además de la computación paralela (por ejemplo, Dask, PySpark), una base de datos es generalmente una mejor solución para tareas de big data que no se guardan en la memoria. Con una base de datos, podemos trabajar con conjuntos de datos que consumen terabytes de espacio en disco. ¡Todo se puede consultar (a través de SQL), accesible y actualizado en un abrir y cerrar de ojos!

En este artículo, consultaremos nuestros datos de registro sin procesar mediante programación en Python a través de Google BigQuery. ¡Es fácil de usar, asequible y súper rápido, incluso en terabytes de datos!

El combo Python / BigQuery también le permite consultar archivos almacenados en Google Cloud Storage. Dulce!

Si Google es un no para usted y desea probar alternativas, Amazon y Microsoft también ofrecen almacenes de datos en la nube. También se integran bien con Python:

Amazon:

Microsoft:

Cree una cuenta GCP y configure el almacenamiento en la nube

Google Cloud Storage y BigQuery son parte de Google Cloud Platform (GCP), el conjunto de servicios en la nube de Google.

GCP no es gratuito, pero puede probarlo durante un año con $ 300 en créditos, con acceso a todos los productos. Muy bien

Tenga en cuenta que después de que haya expirado el período de prueba, el Nivel gratuito de Google Cloud aún le dará acceso a la mayoría de los recursos de Google Cloud de forma gratuita. Con 5 GB de almacenamiento por mes, esto suele ser suficiente si desea experimentar con pequeños conjuntos de datos, trabajar en pruebas de conceptos, etc.

Créeme, hay muchos. Gran. Cosas. At. ¡Probar!

Puede registrarse para obtener una prueba gratuita aquí.

Una vez que se complete el registro, se creará automáticamente un nuevo proyecto con un nombre aleatorio y bastante exótico, por ejemplo, el mío fue "Araña araña-266010"!

Cree nuestro primer compartimento para almacenar nuestros archivos de registro

En Google Cloud Storage, los archivos se almacenan en "compartimentos". Contendrán nuestros archivos de registro.

Para crear su primer compartimento, vaya a almacenamiento> navegador> crear un compartimento:

El nombre del compartimento debe ser único. ¡Apropiadamente llamé al mío "seo_server_logs"!

Luego tenemos que elegir dónde y cómo almacenar nuestros datos de registro:

  • # 1 Tipo de ubicación – "Región" es generalmente suficiente.
  • Lugar # 2 – Como estoy basado en el Reino Unido, he seleccionado "Europa Occidental2". Selecciona tu ubicación más cercana
  • # 3 Haga clic en "continuar"

Clase de almacenamiento predeterminada: He tenido buenos resultados con "Nearline". Es más barato que el estándar y los datos se recuperan con bastante rapidez:

Acceso a objetos: "Uniforme" está bien:

Finalmente, en el bloque "parámetros avanzados", seleccione:

  • # 1 – Clave administrada por Google
  • # 2 – Sin política de retención
  • # 3 – No es necesario agregar una etiqueta todavía

Cuando haya terminado, haga clic en "Crear".

¡Has creado tu primer cubo! Es hora de descargar nuestros datos de registro.

Agregar archivos de registro a su depósito de Cloud Storage

¡Puedes descargar tantos archivos como quieras, cuando quieras!

La forma más fácil es arrastrar y soltar sus archivos a la interfaz de usuario web de Cloud Storage, como se muestra a continuación:

Sin embargo, si realmente desea profundizar el análisis de registro, le sugiero que automatice el proceso de ingestión de datos.

Aquí hay algunas cosas que puedes probar:

  • Las tareas de Cron se pueden configurar entre servidores FTP e infraestructuras de almacenamiento en la nube:
  • Los administradores de FTP como Cyberduck también ofrecen transferencias automáticas a sistemas de almacenamiento.
  • Más consejos sobre la ingestión de datos aquí (AppEngine, JSON API, etc.)

Una nota rápida sobre formatos de archivo

Los archivos de muestra cargados en Github ya se han convertido a .csv para usted.

Tenga en cuenta que es posible que deba convertir sus propios archivos de registro a un formato de archivo compatible con las consultas SQL. Bigquery acepta .csv o .parquet.

Los archivos pueden convertirse fácilmente en masa a otro formato a través de la línea de comando. Puede acceder a la línea de comando de la siguiente manera en Windows:

  • Abre el menú de inicio de Windows
  • Escriba "comando" en la barra de búsqueda
  • Seleccione "Símbolo del sistema" en los resultados de búsqueda
  • No he probado esto en una Mac, pero creo que la CLI se encuentra en el Utilidades carpetas

Una vez abierto, vaya a la carpeta que contiene los archivos que desea convertir con este comando:

CD & # 39; ruta / a / carpeta & # 39;

Simplemente reemplace ruta / a / carpeta con tu camino

Luego escriba el comando a continuación para convertir, p. Registre archivos en .csv:

para el archivo en * .log; do mv "$ archivo" "$ (nombre base" $ archivo ". * 0) .csv"; Terminado

Tenga en cuenta que es posible que deba activar el subsistema de Windows para Linux para usar este comando Bash.

Ahora que nuestros archivos de registro están en el formato correcto, ¡es hora de iniciar Pythoning!

Libera el pitón

¿Todavía tengo que presentar Python?

Según Stack Overflow, Python es ahora el lenguaje de programación principal de más rápido crecimiento. También se está volviendo increíblemente popular en la esfera de SEO, gracias a los predicadores de Python como aldea o JR.

Puede ejecutar Python en su computadora local a través del cuaderno Jupyter o IDE, o incluso en la nube a través de Google Colab. Utilizaremos Google Colab en este artículo.

Recuerde que el bloc de notas está aquí y los fragmentos de código se pegan a continuación, con explicaciones.

Importar bibliotecas + autenticación GCP

Comencemos ejecutando la celda a continuación:

Importa las bibliotecas de Python que necesitamos y lo redirige a una pantalla de autenticación.

Allí, deberá elegir la cuenta de Google vinculada a su proyecto GCP.

Conéctese a Google Cloud Storage (GCS) y BigQuery

Hay bastante información que agregar para conectar nuestro portátil Python a GCS y BigQuery. Además, completar esta información manualmente puede ser tedioso.

Afortunadamente, los formularios de Google Colab nos permiten configurar fácilmente nuestro código y ahorrar tiempo.

Los formularios en este folleto se han completado previamente para usted. No es necesario hacer nada, aunque le sugiero que modifique el código para adaptarlo a sus necesidades.

Aquí le mostramos cómo crear su propio formulario: vaya a Insertar> agregue un campo de formulario> luego complete los detalles a continuación:

Cuando modifica un elemento del formulario, sus valores correspondientes cambiarán mágicamente en el código.

Complete "ID del proyecto" y "ubicación del compartimento"

En nuestro primer formulario, deberá agregar dos variables:

  • Su ID de proyecto de GCP (el mío es ‘learn-spider-266010 ′)
  • La ubicación de tu cubo:
    • Para encontrarlo, en GCP, vaya a almacenamiento> navegador> verifique la ubicación en la tabla
    • El mío es "europe-west2"

Aquí está el fragmento de código para este formulario:

Complete el "nombre del depósito" y la "ruta del archivo / carpeta":

En el segundo formulario, tendremos que completar otras dos variables:

El nombre del compartimento:

  • Para encontrarlo, en GCP vaya a: almacenamiento> navegador> luego verifique su "nombre" en la tabla
  • ¡Lo llamé "apache_seo_logs"!

La ruta del archivo:

  • Puede usar un carácter comodín para consultar varios archivos. ¡Muy bien!
  • Por ejemplo. con la ruta genérica "Loggy*Bigquery consultaría estos tres archivos a la vez:
    • Loggy01.csv
    • Loggy02.csv
    • Loggy03.csv
  • Bigquery también crea una tabla temporal desde otro lugar (más información a continuación)

Aquí está el código del formulario:

Conecte Python a Google Cloud Storage y BigQuery

En el tercer formulario, debe asignar un nombre a su tabla BigQuery. Llamé a la mía "log_sample". Tenga en cuenta que esta tabla temporal no se creará en su cuenta de Bigquery.

Bien, ahora las cosas se están poniendo realmente emocionantes porque podemos comenzar a consultar nuestro conjunto de datos a través de SQL * sin necesariamente * dejando nuestro cuaderno – ¿Qué tan genial es eso?

Dado que los datos de registro todavía están en su forma sin procesar, las consultas son algo limitadas. Sin embargo, podemos aplicar un filtro SQL básico que acelerará las operaciones de Pandas más adelante.

He creado 2 consultas SQL de esta forma:

  • "SQL_1st_Filter" para filtrar cualquier texto
  • "SQL_Useragent_Filter" para seleccionar su User-Agent, a través de una lista desplegable

No dude en consultar el código subyacente y adaptar estas dos consultas a sus necesidades.

Si su trivia SQL está un poco oxidada, ¡aquí hay un buen recordatorio de Kaggle!

Código para este formulario:

Convertir la salida de la lista a un marco de datos de pandas

El resultado generado por BigQuery es una lista bidimensional (también llamada "lista de listas"). Necesitamos convertirlo a un marco de datos de Pandas a través de este código:

¡Terminado! ¡Ahora tenemos un Dataframe que se puede configurar en Pandas!

Tiempo de limpieza de datos, como Pandas!

Es hora de hacer que estos periódicos crípticos sean un poco más presentables:

  • Dividir cada elemento
  • Creación de una columna para cada elemento.

Direcciones IP divididas

Fechas y horarios compartidos

Ahora debemos convertir la columna de fecha de la cadena en un objeto "Fecha y hora", a través de Pandas to_datetime () método:

Esto nos permitirá realizar operaciones de series temporales como:

  • Cortar rangos de fechas específicas
  • Muestreo de series de tiempo para diferentes períodos (por ejemplo, día a mes)
  • Cálculo de estadísticas deslizantes, como un promedio móvil

El combo Pandas / Numpy es realmente poderoso cuando se trata de manipular series de tiempo, ¡descubre qué puedes hacer aquí!

Más operaciones divididas a continuación:

Dominios divididos

Métodos para compartir (Obtener, Publicar, etc.)

URL divididas

Protocolos HTTP divididos

Divide los códigos de estado

Divide el "tiempo tomado"

Dividir URL de referencia

Agentes de usuario divididos

Dividir las URL redirigidas (cuando existen)

Reorganizar columnas

Es hora de ver nuestra obra maestra:

¡Bien jugado! Con solo unas pocas líneas de código, ha convertido un conjunto de registros cifrados en un Marco de datos estructurado, listo para el análisis exploratorio de datos.

Agreguemos algunos extras adicionales.

Crear columnas categóricas

Estas columnas categóricas serán útiles para el análisis de datos o las tareas de visualización. ¡Crearemos dos, allanando el camino para sus propias experiencias!

Crear una columna de clase de código HTTP

Crea una categoría de robots de motores de búsqueda

Como puedes ver, nuestras nuevas columnas httpCodeClass y SEBotClass fue creado:

Detectando robots de motor de búsqueda "falsificados"

Todavía tenemos que abordar un paso crucial para el SEO: verificar que las direcciones IP realmente provienen de Googlebots.

¡Todos los créditos se deben al gran Tyler Reardon por esta canción! Tyler creó searchtools.io, una herramienta inteligente que verifica las direcciones IP y devuelve el "robot" falso, basado en la búsqueda inversa de DNS.

Simplemente integramos este script en el bloc de notas – fragmento de código a continuación:

La ejecución de la celda anterior creará una nueva columna titulada "isRealGbot?:

Tenga en cuenta que el script aún está en su infancia, así que considere las siguientes advertencias:

  • Puede obtener errores al verificar una gran cantidad de direcciones IP. En caso afirmativo, simplemente omita la celda
  • Solo Googlebots están verificados actualmente

Tyler y yo estamos trabajando en el guión para mejorarlo, ¡así que estén atentos a Twitter para futuras mejoras!

Filtre el marco de datos antes de la exportación final

Si desea refinar aún más la tabla antes de exportar a .csv, esta es su oportunidad de filtrar los códigos de estado que no necesita y refinar las escalas de tiempo.

Algunos casos de uso comunes:

  • Tiene 12 meses de datos de registro almacenados en la nube, pero solo desea ver las últimas 2 semanas
  • Recientemente migró un sitio web y desea verificar todos los redireccionamientos (301, 302, etc.) y sus ubicaciones de redireccionamiento
  • Desea verificar todos los códigos de respuesta 4XX

Filtrar por fecha

Refine las fechas de inicio y finalización utilizando este formulario:

Filtrar por códigos de estado

Verifique la distribución de los códigos de estado antes de filtrar:

código:

Luego, filtre los códigos de estado HTTP a través de este formulario:

Código asociado:

Exportar a .csv

Nuestro último paso es exportar nuestro Dataframe a un archivo .csv. Déle un nombre a través del formulario de exportación:

Código para esta última forma:

¡Palmadita en la espalda si seguiste hasta aquí! ¡Has logrado mucho durante este artículo!

¡No puedo esperar para llevarlo al siguiente nivel en mi próxima columna, con técnicas más avanzadas de modelado / visualización de datos!

Me gustaría agradecer a las siguientes personas:

  • Tyler Reardon, ¡quién me ayudó a integrar su herramienta anti-spoofing en esta laptop!
  • Paul Adams de Octamis y mi querido compatriota Olivier Papon por su consejo experto
  • Por último, pero no menos importante, felicitaciones a Hamlet Batista o JR Oakes. ¡Gracias a todos por ser tan inspiradores para la comunidad SEO!

Por favor contactame en Twitter Si tiene alguna pregunta o necesita ayuda adicional. ¡Cualquier comentario (incluidas las solicitudes de impresión! :)) también es muy apreciado.

¡Feliz pitón!

Este año, SMX Advanced ofrecerá una nueva pista de referencia para desarrolladores con sesiones muy técnicas, muchas en formato de codificación en vivo, centradas en el uso de bibliotecas de códigos y modelos de arquitectura para desarrollar aplicaciones que mejoran el SEO. SMX Advanced se llevará a cabo del 8 al 10 de junio en Seattle. Regístrese hoy


Las opiniones expresadas en este artículo son las del autor invitado y no necesariamente Search Engine Land. Los autores se enumeran aquí.


[ad_2]