Table of Content

Exploitez Python et Google Cloud pour extraire des informations SEO significatives à partir des données de journal du serveur


Pour ma première publication dans Search Engine Land, je commencerai par citer Ian Lurie:

L'analyse du fichier journal est un art perdu. Mais cela peut sauver vos fesses SEO!

Des mots sages.

Cependant, l'obtention des données dont nous avons besoin à partir des fichiers journaux du serveur est souvent laborieuse:

  • Les fichiers journaux gigantesques nécessitent des tuyaux d'ingestion de données robustes, une infrastructure de stockage cloud fiable et un système de requête solide
  • Une modélisation méticuleuse des données est également nécessaire pour convertir les données d'enregistrements cryptiques non traités en bits lisibles, adaptés à l'analyse et à la visualisation de données exploratoires

Dans la première publication de cette série en deux parties, j'ai Il vous montrera comment adapter facilement votre analyse à des ensembles de données plus importants et extraire des informations SEO significatives à partir des enregistrements de votre serveur.

Tout cela avec juste un soupçon de Python et une touche de Google Cloud!

Voici notre plan d'action détaillé:

# 1 – Je vais commencer par vous donner un peu de contexte:

  • Que sont les fichiers journaux et pourquoi sont-ils importants pour le référencement?
  • Comment les obtenir
  • Pourquoi Python ne le fait-il pas simplement? Il n'est pas toujours coupé en ce qui concerne l'analyse du journal du serveur

# 2 – Ensuite, nous allons configurer les choses:

  • Créer un compte Google Cloud Platform
  • Créer un référentiel Google Cloud Storage pour stocker nos fichiers journaux
  • Utilisez la ligne de commande pour convertir nos fichiers dans un format compatible pour les requêtes
  • Transférez nos fichiers vers Google Cloud Storage, manuellement et par programme

# 3 – Enfin, nous entrerons au cœur de Pythoning: disons:

  • Consultez nos fichiers journaux avec Bigquery, dans Colab!
  • Créez un modèle de données qui rend nos enregistrements bruts plus lisibles
  • Créez des colonnes catégoriques qui amélioreront notre analyse plus tard
  • Filtrez et exportez nos résultats vers .csv

Dans la deuxième partie de cette série (disponible plus tard cette année), nous analyserons des techniques de modélisation de données plus avancées en Python pour évaluer:

  • Volume de suivi des bots
  • Suivi des déchets budgétaires
  • Le suivi des URL en double

sera également Il montre comment ajouter et fusionner des données de journal aux données de la Search Console et créer des visualisations interactives avec Plotly Dash !

Excité? Décryptons!

Configuration système requise

Nous utiliserons Google Colab dans cet article. Il n'y a pas d'exigences spécifiques ou de problèmes de compatibilité avec les versions précédentes ici, car Google Colab est dans le cloud.

Fichiers téléchargeables

  • Le bloc-notes Colab est accessible ici
  • Les fichiers journaux peuvent être téléchargés dans Github – 4 exemples de fichiers de 20 Mo chacun, couvrant 4 jours (1 jour par fichier)

Soyez assuré que le portable a été testé avec plusieurs millions de lignes à une vitesse fulgurante et sans obstruction!

Préambule: Que sont les fichiers journaux?

Bien que je ne veuille pas trop discuter de ce que sont les fichiers journaux, pourquoi ils peuvent être précieux pour le référencement, etc. (Bon sang, il y a de nombreux grands [19659039] articles sur le sujet déjà!), Voici un peu de contexte.

Un fichier journal du serveur enregistre chaque demande de contenu adressée à votre serveur Web.

Chacun. Celibataire.

Dans ses formes les plus grossières, les documents sont indéchiffrables, p. Voici quelques lignes brutes d'un serveur Web Apache:

intimidant, n'est-ce pas?

Les enregistrements bruts doivent être "nettoyés" pour être analysés; C'est là que la modélisation des données entre en jeu. Mais plus à ce sujet plus tard.

Alors que la structure d'un fichier journal dépend principalement du serveur (Apache, Nginx, IIS, etc.), il a des attributs pérennes:

  • IP serveur [19659006] Date / heure (également appelée horodatage)
  • Méthode (GET ou POST)
  • URI
  • Code d'état HTTP
  • Agent utilisateur

Des attributs supplémentaires peuvent généralement être inclus, tels que:

  • Référence: l'URL qui & # 39 ; lié & # 39; à l'utilisateur vers son site
  • URL redirigée, lorsqu'une redirection se produit
  • Taille du fichier envoyé (en octets)
  • Temps nécessaire: le temps nécessaire à une demande traitée et sa réponse à envoyer

Pourquoi les fichiers journaux sont-ils importants pour le référencement?

Si vous ne savez pas pourquoi elles sont importantes, lisez ceci . Du temps passé à bon escient!

Accès à vos fichiers journaux

Si vous ne savez pas par où commencer, il est préférable de demander à votre développeur Web / DevOps (du client) s'il peut vous accorder l'accès aux journaux bruts du serveur via FTP, idéalement sans aucun filtre appliqué.

Voici les directives générales pour trouver et gérer les données de journal sur les trois serveurs les plus populaires:

Nous utiliserons des fichiers Apache bruts dans ce projet.

Pourquoi les Pandas seuls ne suffisent pas quand il s'agit d'analyser les enregistrements

Pandas (un outil de manipulation de données open source construit avec Python) est assez omniprésent dans la science de les données

Il est impératif de couper et de couper les structures de données tabulaires, et le mammifère fonctionne très bien lorsque les données sont en mémoire!

Autrement dit, quelques gigaoctets. Mais pas des téraoctets.

Parallèlement au calcul parallèle (par exemple, Dask PySpark ), une base de données est généralement une meilleure solution pour les tâches de données volumineuses qui ne tiennent pas en mémoire. Avec une base de données, nous pouvons travailler avec des ensembles de données qui consomment des téraoctets d'espace disque. Tout peut être consulté (via SQL ), accessible et mis à jour en un clin d'œil!

Dans cette publication, nous consulterons nos données brutes de registre en Python via Google BigQuery . Il est facile à utiliser, abordable et ultrarapide, même en téraoctets de données!

Le combo Python / BigQuery vous permet également d'interroger des fichiers stockés dans Google Cloud Storage. Douce!

Si Google est une option négative pour vous et que vous souhaitez essayer des alternatives, Amazon et Microsoft proposent également des magasins de données dans le cloud. Ils s'intègrent également bien avec Python:

Amazon:

Microsoft:

Créez un compte GCP et configurez Cloud Storage

Google Cloud Storage et BigQuery font partie de Google Cloud Platform ( GCP), l'ensemble des services de cloud computing de Google.

GCP n'est pas gratuit, mais vous pouvez l'essayer pendant un an avec 300 $ de crédits, avec accès à tous les produits. Assez cool.

Veuillez noter qu'à l'expiration de la version d'essai, Google Cloud Free Tier vous donnera toujours accès à la plupart des ressources de Google Cloud, gratuitement. Avec 5 Go de stockage par mois, c'est généralement suffisant si vous voulez expérimenter avec de petits ensembles de données, travailler sur la preuve de concept, etc.

Croyez-moi, il y en a beaucoup . Génial . Les choses . à . Essayez !

Vous pouvez vous inscrire pour un essai gratuit ici .

Une fois l'enregistrement terminé, un nouveau projet sera créé automatiquement avec un nom aléatoire et assez exotique, par exemple le mien était "learn-spider-266010 "!

Créez notre premier référentiel pour stocker nos fichiers journaux

Dans Google Cloud Storage, les fichiers sont stockés dans des "référentiels". Ils contiendront nos fichiers journaux.

Pour créer votre premier dépôt, accédez à stockage> navigateur> créer un dépôt:

Le nom du dépôt doit être unique. J'ai à juste titre appelé le mien & # 39; seo_server_logs & # 39;!

Ensuite, nous devons choisir où et comment stocker nos données d'enregistrement:

  • # 1 Type de lieu – & # 39; Région & # 39; C'est généralement assez bon.
  • Emplacement n ° 2 – Comme je suis au Royaume-Uni, j'ai sélectionné "Europe-West2". Sélectionnez votre emplacement le plus proche
  • # 3 Cliquez sur "continuer"

Classe de stockage par défaut: J'ai eu de bons résultats avec "nearline". C'est moins cher que la norme et les données sont récupérées assez rapidement:

Accès aux objets: "Uniform" va bien:

Enfin, dans le bloc "configuration avancée", sélectionnez:

  • # 1 – Clé gérée par Google
  • # 2 – Aucune politique de rétention
  • # 3 – Il n'est pas nécessaire d'ajouter une étiquette pour l'instant

Une fois terminé, cliquez sur "& # 39; créer".

A créé votre premier cube! Il est temps de charger nos données d'enregistrement.

Ajoutez des fichiers journaux à votre référentiel Cloud Storage

Vous pouvez télécharger autant de fichiers que vous le souhaitez, quand vous le souhaitez!

Le moyen le plus simple consiste à faire glisser et déposer vos fichiers dans l'interface utilisateur Web de Cloud Storage, comme illustré ci-dessous:

Cependant, si vous voulez vraiment prendre l'analyse des journaux au sérieux, je vous suggère d'automatiser le processus d'ingestion de données.

Voici certaines choses que vous pouvez essayer: [19659005] Les travaux de Cron peuvent être configurés entre des serveurs FTP et une infrastructure de stockage cloud:

  • Administrateurs FTP tels que Cyberduck ils proposent également des transferts automatiques vers des systèmes de stockage
  • Plus de suggestions d'ingestion de données ici (AppEngine, API JSON, etc.)

Une note rapide sur les formats de fichiers

Les exemples de fichiers téléchargés sur Github ont déjà été convertis en .csv pour vous. [19659004] Veuillez noter que vous devrez peut-être convertir vos propres fichiers journaux dans un format de fichier compatible avec la requête SQL. Bigquery accepte .csv ou .parquet .

Les fichiers peuvent être facilement convertis dans un autre format via la ligne de commande . Vous pouvez accéder à la ligne de commande comme suit dans Windows:

  • Ouvrez le menu Démarrer de Windows
  • Tapez "commande" dans la barre de recherche
  • Sélectionnez "Invite de commandes" dans les résultats de la recherche [19659006] Je n'ai pas essayé cela sur un Mac, mais je pense que la CLI se trouve dans le dossier Utilitaires

Une fois ouvert, accédez au dossier qui contient les fichiers que vous souhaitez convertir à l'aide de cette commande: [19659004] CD & # 39; path / to / folder & # 39;

Remplacez simplement chemin / vers / dossier par votre chemin.

Tapez ensuite la commande ci-dessous pour convertir, par exemple, les fichiers .log en .csv:

en fichier dans * .log; do mv "$ file" "$ (nom de base" $ file ". * 0) .csv"; Terminé

Notez que vous devrez peut-être activer Sous-système Windows pour Linux pour utiliser cette commande Bash.

Maintenant que nos fichiers journaux sont au format correct, il est temps de commencer le Pythoning!

Python gratuit

Dois-je encore introduire Python?!

Selon Stack Overflow, Python est désormais le langage de programmation principal à la croissance la plus rapide . Il devient également incroyablement populaire dans la sphère SEO, grâce aux prédicateurs Python comme Hamlet ou JR .

Vous pouvez exécuter Python sur votre ordinateur local via Notebook Jupyter ou un IDE ou même dans le cloud via Google Colab. Nous utiliserons Google Colab dans cet article.

Rappelez-vous, le cahier est ici et les extraits de code sont collés ci-dessous, avec les explications.

Importer les bibliothèques + authentification GCP

Nous allons commencer par exécuter la cellule ci-dessous:

Importer les bibliothèques Python dont nous avons besoin et les rediriger vers un écran d'authentification.

Là, vous devez choisir le compte Google lié à votre projet GCP.

Connectez-vous à Google Cloud Storage (GCS) et BigQuery

Il y a suffisamment d'informations à ajouter pour connecter notre ordinateur portable Python à GCS et BigQuery. De plus, remplir ces informations manuellement peut être fastidieux!

Heureusement, les formulaires Google Colab facilitent le paramétrage de notre code et permettent de gagner du temps.

Les formulaires de ce carnet ont déjà été remplis pour vous. Vous n'avez rien à faire, bien que je vous suggère de modifier le code en fonction de vos besoins.

Ensuite, nous vous montrons comment créer votre propre formulaire: allez dans Insérer> ajouter un champ de formulaire> et complétez les détails ci-dessous:

Lorsque vous modifiez un élément du formulaire, ses valeurs correspondantes changeront comme par magie dans le code !

Terminer & # 39; ID du projet & # 39; et & # 39; lieu de dépôt & # 39;

Dans notre premier formulaire, vous devrez ajouter deux variables: [19659005] Votre ID de projet GCP (le mien est & # 39; learn-spider-266010 ′)

  • Votre emplacement de dépôt:
    • Pour le trouver , dans GCP, accédez à stockage> navigateur> vérifiez l'emplacement dans le tableau
    • Le mien est & # 39; europe-west2 ′

Voici l'extrait de code pour ce formulaire:

Complet & # 39; nom du dépôt & # 39; et & # 39; chemin du fichier / dossier & # 39;:

Dans le second formulaire, nous devrons compléter deux autres variables: [19659143] Le nom du dépôt:

  • Pour le trouver, dans GCP, allez dans: stockage> navigateur> puis vérifiez votre & # 39; nom & # 39; dans le tableau
  • . Je l'ai appelé à juste titre & # 39; apache_seo_logs & # 39; !

Le chemin du fichier:

  • Vous pouvez utiliser un caractère générique pour interroger plusieurs fichiers – Très bien!
  • Ex. avec le chemin générique & # 39; Loggy * & # 39;, Bigquery consulterait ces trois fichiers à la fois:
    • Loggy01.csv
    • Loggy02.csv
    • Loggy03.csv [19659149] Bigquery crée également une table temporaire (plus d'informations ci-dessous)

    Voici le code du formulaire:

    Connectez Python à Google Cloud Storage et BigQuery

    Dans le troisième formulaire, vous devez donner un Nommez votre table BigQuery: j'ai appelé la mienne & # 39; log_sample & # 39 ;. Notez que cette table temporaire ne sera pas créée dans votre compte Bigquery.

    Eh bien, maintenant les choses deviennent vraiment excitantes, puisque nous pouvons commencer à consulter notre ensemble de données via SQL * sans * quitter notre ordinateur portable – C'est cool ça?!

    Étant donné que les données d'enregistrement sont toujours dans leur forme brute, les requêtes sont quelque peu limitées. Cependant, nous pouvons appliquer un filtre SQL de base qui accélérera les opérations Pandas plus tard.

    J'ai créé 2 requêtes SQL comme celle-ci:

    • "SQL_1st_Filter" pour filtrer n'importe quel texte
    • "SQL_Useragent_Filter" pour sélectionner votre utilisateur -Agent, via un menu déroulant

    N'hésitez pas à vérifier le code sous-jacent et ajustez ces deux requêtes selon vos besoins.

    Si votre trivia SQL est un peu rouillé, voici une bonne mise à jour de Kaggle !

    Code pour ce formulaire:

    Conversion de la sortie de liste en un bloc de données Pandas

    La sortie générée par BigQuery est une liste bidimensionnelle (également appelée & # 39; liste des listes & # 39;). Nous devrons le transformer en une trame de données Pandas grâce à ce code:

    Prêt! Nous avons maintenant un Dataframe qui peut être manipulé dans Pandas!

    Temps de nettoyage des données, à la manière des Pandas!

    Il est temps de rendre ces enregistrements cryptiques un peu plus présentables:

    • Fractionnement de chaque élément
    • Création d'une colonne pour chaque élément

    Fractionner les adresses IP

    Diviser les dates et les heures

    Nous devons maintenant convertir la colonne de date de la chaîne en "Objet date et heure", en utilisant la méthode Pandas to_datetime () : [19659060] Cela nous permettra d'effectuer des opérations de séries chronologiques telles que:

    • Découpage de plages de dates spécifiques
    • Échantillonnage de séries chronologiques pour différentes périodes (par exemple, de jour en mois)
    • Calcul de statistiques continues, comme moyenne variable

    Le combo Pandas / Numpy est vraiment puissant en ce qui concerne la manipulation des séries chronologiques, voyez tout ce que vous pouvez faire ici !

    Plus d'opérations divisées ci-dessous:

    Domaines fractionnés

    Méthodes fractionnées (Get, Post, etc.)

    URL fractionnée

    Fractionner les protocoles HTTP

    Codes d'état divisés

    Diviser & # 39; le temps passé & # 39;

    Diviser l'URL de référence

    Diviser les agents utilisateurs

    Diviser les URL redirigées (le cas échéant)

    Réorganiser les colonnes

    Il est temps de voir notre chef-d'œuvre:

    Bravo! Avec seulement quelques lignes de code, il a converti un ensemble d'enregistrements cryptiques en un cadre de données structuré, prêt pour l'analyse exploratoire des données.

    Ajoutons quelques extras supplémentaires.

    Créer des colonnes catégorielles

    Ces colonnes catégorielles seront utiles pour les tâches d'analyse ou de visualisation des données. Nous en créerons deux, ouvrant la voie à vos propres expériences!

    Créer une colonne de classe de code HTTP

    Créer une colonne de catégorie de bot de moteur de recherche

    Comme vous pouvez le voir, nos nouvelles colonnes httpCodeClass et SEBotClass ont été créés:

    Détection des robots des moteurs de recherche & # 39; contrefaits & # 39;

    Nous devons encore aborder une étape cruciale pour le référencement: vérifier que les adresses IP proviennent bien de Googlebots.

    Tout le crédit dû au grand Tyler Reardon pour cette partie! Tyler a créé searchtools.io un outil intelligent qui vérifie les adresses IP et renvoie le & # 39; faux & # 39; de Googlebot, sur la base d'une recherche DNS inversée.

    Nous avons simplement intégré ce script dans le code du bloc-notes de fragments ci-dessous:

    Lors de l'exécution de la cellule ci-dessus, une nouvelle colonne appelée & # 39; isRealGbot?:

    sera créée. Notez que le script Il en est encore à ses balbutiements, alors gardez à l'esprit les avertissements suivants:

    • Vous pouvez obtenir des erreurs lors de la vérification d'un grand nombre d'adresses IP. Si c'est le cas, sautez simplement la cellule
    • . Actuellement, seuls les Googlebots sont contrôlés

    Tyler et moi travaillons sur le script pour l'améliorer, alors restez à l'écoute sur Twitter pour de futures améliorations!

    Filtrer la trame de données avant l'exportation finale [19659031] Si vous souhaitez affiner davantage la table avant d'exporter vers .csv, c'est votre chance de filtrer les codes d'état dont vous n'avez pas besoin et d'affiner les échelles de temps.

    Quelques cas d'utilisation courants:

    • Il contient 12 mois de données d'enregistrement stockées dans le cloud, mais vous ne souhaitez passer en revue que les 2 dernières semaines
    • Vous avez récemment effectué une migration de site Web et souhaitez vérifier tout redirections (301, 302, etc.) et leurs emplacements de redirection
    • Vous souhaitez vérifier tous les codes de réponse 4XX

    Filtrer par date

    Affinez les dates de début et de fin via ce formulaire:

    Filtrer par codes d'état

    Vérifier la distribution des codes d'état avant de filtrer:

    Code: [19659062] Filtrer ensuite les codes d'état HTTP via ce formulaire:

    Code associé:

    Expo rt a .csv

    Notre dernière étape consiste à exporter notre Dataframe vers un fichier .csv. Donnez-lui un nom via le formulaire d'exportation:

    Code pour le dernier formulaire:

    Tapez sur le dos si vous avez suivi ici! Vous avez tellement accompli au cours de cet article!

    Je suis impatient de passer au niveau supérieur dans ma prochaine colonne, avec des techniques de visualisation / modélisation de données plus avancées!

    Je remercie les personnes suivantes:

    Contactez-moi sur Twitter si vous avez des questions ou avez besoin de plus d'aide. Tous les commentaires (y compris les demandes d'extraction! :)) sont également grandement appréciés

    Happy Python!

    Cette année, SMX Advanced présentera un nouveau référencement pour les développeurs avec des sessions très techniques, de nombreux formats de codage en direct: axés sur l'utilisation de bibliothèques de codes et de modèles d'architecture pour développer des applications qui améliorent le référencement . SMX Advanced aura lieu du 8 au 10 juin à Seattle. Inscrivez-vous aujourd'hui.


    Les opinions exprimées dans cet article sont celles de l'auteur invité et pas nécessairement de Search Engine Land. Les auteurs du personnel sont répertoriés ici .


    À propos de l'auteur

    Charly Wargnier est un consultant en marketing numérique avec une expérience au Royaume-Uni, qui s'appuie sur plus d'une décennie de référencement, de BI et de données dans les tranchées. Expérience en ingénierie Charly a travaillé à la fois en interne et en agence, principalement pour de grandes entreprises de vente au détail et de mode, et sur un large éventail de fronts qui incluent des problèmes techniques complexes avec le référencement, les performances du site, les canaux de données et les cadres de visualisation. Lorsqu'il ne travaille pas, il aime coder pour de bon et passer du bon temps avec sa famille: cuisiner, écouter de la musique jazz et jouer aux échecs, sans ordre particulier!

Source link



from My Blog https://ift.tt/3bFgBTU
via IFTTT

Post a Comment