qwanturank

Par où commencer si vous vouliez comprendre le contenu d'un site Web, en particulier les grands éditeurs ?

Je m'intéresse généralement aux questions suivantes:

  • À quelle fréquence et combien publient-ils ?
  • Y a-t-il des tendances quotidiennes, hebdomadaires, mensuelles ou annuelles dans leur activité d'édition ?
  • Sur quels sujets écrivent-ils ou quels produits vendent-ils ?
  • Quelles sont les tendances dans leurs sujets ? Quels sujets gagnent en volume et lesquels ne le sont pas ?
  • Comment le contenu ou le produit est-il réparti entre les langues, les régions, les catégories ou les auteurs ?
  • Dans leur forme la plus élémentaire, les plans de site doivent uniquement avoir la balise "loc" (sous la balise parent "url"). Essentiellement, un sitemap peut simplement être une liste d'URL. D'autres balises facultatives sont autorisées, surtout:

  • "lastmod",
  • "changefreq",
  • "priorité",
  • Et, dans certains cas, "alternatif"
  • Si vous avez "lastmod" dans le plan du site (et les sites les plus réputés le font), vous pouvez obtenir toutes les informations relatives à l'activité et aux tendances de publication. Ensuite, la richesse des URL détermine la quantité d'informations que vous pouvez extraire, mais gardez à l'esprit que si les URL sont structurées sans aucune information réelle comme example.com/product/12345, alors vous ne pourrez pas obtenir beaucoup du plan du site. Le but de ce tutoriel est de rendre les sitemaps un peu moins ennuyeux ! J'analyserai les sitemaps de BuzzFeed, et comme ils ont "lastmod" ainsi que des URL cohérentes et riches, nous serons en mesure de répondre à toutes les questions posées ci-dessus. Cela sera utilisé comme proxy pour la "date de publication", qui n'est pas exacte à 100% car les pages sont mises à jour. En général, j'ai constaté que si les choses changent, ils ont tendance à le faire en un jour ou deux pour apporter des corrections, et la majorité ne le font pas.

    Python pour l'analyse

    J'utiliserai Python pour l'analyse, et une version interactive de l'article est disponible ici. Je vous encourage à le vérifier si vous souhaitez suivre. De cette façon, vous pouvez apporter des modifications et explorer d'autres choses qui pourraient vous intéresser. Les visualisations de données sont également interactives, vous pourrez donc zoomer, survoler et explorer un peu mieux. Si vous ne connaissez aucune programmation, vous pouvez ignorer en toute sécurité tous les extraits de code (que je vais expliquer de toute façon). Commençons donc. Pour obtenir les plans de site sous forme de tableau, j'utiliserai la fonction sitemap_to_df du package advertools. "df" est l'abréviation de DataFrame, qui est essentiellement un tableau de données. Vous passez simplement l'URL d'un plan de site (ou une URL d'index de plan de site) à la fonction, et elle retourne le (s) plan (s) de site sous forme de tableau. Si vous lui donnez un index de plan de site, il parcourra tous les sous-plans de site et extraira les URL et toutes les autres données disponibles. En plus des outils de publicité, j'utiliserai des pandas pour la manipulation des données, ainsi que complotement pour la visualisation des données. Récupérez les sitemaps de BuzzFeed et fusionnez-les en une seule ligne DataFrame Sample à partir du DataFrame "buzzfeed". Ce qui précède est un petit sous-ensemble de notre DataFrame - "lastmod" est l'index, et nous avons deux colonnes; "loc" qui est l'URL et "sitemap", qui est l'URL du plan du site à partir duquel l'URL a été récupérée. "NaT" signifie "not-a-time", qui est la représentation de la valeur manquante des objets date / heure. Comme vous pouvez le voir, nous avons environ un demi-million d'URL à parcourir.

    Extraction des catégories de sitemaps

    Si vous regardez les URL des plans de site, vous verrez qu'ils contiennent la catégorie du site Web, par exemple: https://www.buzzfeed.com/sitemap/buzzfeed/2019_5.xml
    https://www.buzzfeed.com/sitemap/achats/2018_13.xml Cela peut être utile pour comprendre à quelle catégorie l'URL appartient. Pour extraire la catégorie de ces URL, la ligne suivante divise les URL XML par le caractère barre oblique et prend le cinquième élément (index 4) de la liste résultante. Le texte extrait sera affecté à une nouvelle colonne appelée sitemap_cat.
    Catégories de sitemaps extraites et placées dans une nouvelle colonne "sitemap_cat" Maintenant que nous avons une colonne montrant les catégories, nous pouvons compter le nombre d'URL dont elles disposent et obtenir un aperçu du volume relatif de contenu sous chacune. Le code suivant compte simplement les valeurs de cette colonne et met en forme le DataFrame résultant.
    Nombre d'articles par catégorie, ainsi que les pourcentages Il est clair que le "buzzfeed" est la catégorie principale, qui est essentiellement le site principal, et les autres sont très petits en comparaison. Avant de poursuivre, il est important de mieux comprendre les valeurs de NaT que nous avons vues au début. Voyons à quelle catégorie ils appartiennent.
    Catégories où "lastmod" n'est pas disponible (cinq premiers) Les cinq premiers relèvent de "video", mais est-ce vrai pour toutes les valeurs manquantes ? La ligne suivante prend un sous-ensemble de DataFrame Buzzfeed (le sous-ensemble où l'index contient des valeurs manquantes), puis prend la colonne sitemap_cat et compte le nombre de valeurs uniques. Puisque nous avons vu que certaines valeurs sont "vidéo", si le nombre de valeurs uniques est un, alors toutes les catégories de dates manquantes relèvent de "vidéo".
    Nombre de catégories uniques où "lastmod" n'est pas disponible Nous avons maintenant découvert une limitation dans notre ensemble de données, qui, nous le savons, affecte 2,1% des URL. Cependant, nous ne pouvons pas savoir quel pourcentage du trafic et / ou des revenus ils représentent. Nous ne pourrons pas analyser les problèmes liés à la date avec les URL des vidéos. Nous ne pourrons pas non plus obtenir d'informations sur le contenu de ces URL:
    Exemple d'URL de vidéo

    Tendances de publication

    Voyons maintenant combien d'articles ils publient par an, et s'il y a eu ou non des années de publication supérieures / inférieures. Le code suivant rééchantillonne le DataFrame par "A" (pour annuel) et compte les lignes pour chaque année. Il s'agit essentiellement d'un tableau croisé dynamique si vous êtes plus familier avec les feuilles de calcul. Articles par an Diagramme à barres des articles par an Nous pouvons observer une augmentation spectaculaire des articles de 2010 (3 514) à 2011 (12 000) et de 2011 à 2012 (46 000). Il est hautement improbable qu'un site Web puisse augmenter son activité de publication presque quatre fois, deux fois et deux années consécutives. Ils ont peut-être fait des acquisitions, des partenariats de contenu ou il y a peut-être des problèmes avec l'ensemble de données.

    Tendances mensuelles

    Lorsque nous vérifierons les auteurs plus tard, nous verrons une réponse possible à cette soudaine augmentation. Zoomons plus loin et examinons la tendance mensuelle. Échantillon d'articles par mois Diagramme à barres d'articles par mois Ces données confirment la tendance ci-dessus et montrent un changement encore plus soudain. En avril 2010, ils ont publié 1 249 articles, après en avoir publié 354 le mois précédent. Nous pouvons voir quelque chose de similaire se produire en avril 2011. Maintenant, il est presque certain que ce n'est pas une croissance naturelle organique de leur activité d'édition.

    Tendances hebdomadaires

    Nous pouvons également jeter un œil à la tendance par jour de la semaine.
    Articles publiés par jour de semaine Rien de très surprenant ici. Ils produisent un nombre d'articles assez constant en semaine, ce qui représente presque le double de ce qu'ils produisent le week-end. Vous pouvez l'exécuter pour différentes périodes pour voir s'il y a des changements sur plusieurs années ou mois, par exemple.

    Tendances annuelles dans les catégories

    Nous pouvons également jeter un œil aux tendances annuelles par catégorie et voir si quelque chose sort. Le code suivant parcourt toutes les catégories et crée un tracé pour le nombre d'articles par an. Articles annuels par catégorie Je peux voir deux choses ici. Le premier est le bond des articles "shopping" de 1 732 à 6 845 en 2019, et 2020 est en bonne voie de le dépasser. Il semble que cela fonctionne bien pour eux. En vérifiant certains de ces articles, vous pouvez voir qu'ils exécutent des programmes d'affiliation et font la promotion de certains produits. Deuxièmement, comment ce tableau peut être trompeur. Par exemple, Tasty a été acquis relativement récemment par BuzzFeed, et ici vous pouvez le voir occuper une infime partie du contenu vous verrez qu'ils ont près de cent millions de followers. Gardez cela à l'esprit, soyez sceptique et essayez de vérifier les informations provenant d'autres sources lorsque cela est possible.

    Structure d'URLEt les articles en anglais ne contiennent pas "/ en /". Créons maintenant une nouvelle colonne pour les langues, ce qui peut être fait en extrayant le motif de deux lettres quelconques apparaissant entre deux barres obliques. Si rien n'est disponible, il sera rempli avec "en". Nous pouvons maintenant voir le nombre d'articles par langue (ou pays dans certains cas).
    Nombre d'articles par langue Articles par graphique à barres de langue Nous pouvons également voir le nombre mensuel d'articles par langue pour une meilleure vue.
    Nombre d'articles par mois - par langue

    Extraction de données sur les auteurs

    Passons maintenant au même processus pour les auteurs. Comme précédemment, nous avons divisé la colonne "loc" par "https://www.semrush.com/" et extrait l'avant-dernier élément, et l'avons placé dans une nouvelle colonne "auteur". Après cela, nous pouvons compter les articles par auteur. Nouvelle colonne ajoutée "auteur" Code pour compter et formater le nombre d'articles par auteur Nombre d'articles par auteur (en tout temps) "cum.%" Indique le pourcentage cumulé du nombre d'articles par les auteurs jusqu'à la ligne actuelle. Les trois premiers auteurs ont généré 6,6% du total des articles, par exemple (bien sûr, "vidéo" n'est pas un auteur, nous l'ignorerons donc). Vous pouvez également voir que certains des meilleurs auteurs sont en fait d'autres organisations de presse et non des personnes. J'ai vérifié manuellement quelques articles par "huffpost" et j'ai eu une erreur 404. L'extrait de code suivant passe par un échantillon aléatoire d'URL où l'auteur est "huffpost" et imprime l'URL avec la réponse. Échantillon aléatoire d'URL et leurs réponses

    Et c'est un autre problème dans l'ensemble de données.

    Les articles des principaux contributeurs n'existent plus. Je ne les ai pas tous vérifiés, et la bonne façon est de parcourir toutes les 500 000 URL pour quantifier ce problème. L'existence d'un si grand nombre d'articles par de grandes agences de presse pourrait être la réponse à la question de l'augmentation soudaine du volume de contenu sur BuzzFeed. C'est certainement un problème d'avoir des 404 dans votre sitemap, mais dans notre cas, c'est génial qu'ils ne les aient pas supprimés, car nous avons une meilleure vue de l'historique du site, même si de nombreuses URL n'existent plus . Cela signifie également qu'il pourrait y avoir d'autres URL inexistantes qui ont été supprimées, et nous ne savons pas. Ai-je dit sceptique ? Avec un si grand site Web, vous pouvez vous attendre à certains problèmes, en particulier sept ou huit ans en arrière, où beaucoup de choses changent et beaucoup de choses ne sont plus pertinentes. Faisons donc le même exercice pour une période plus récente, les années 2019 et 2020 (premier trimestre). Code pour compter les articles par auteur pour 2019 - 2020 Q1 Top auteurs par nombre d'articles pour 2019 - 2020 Q1 Maintenant, tous les meilleurs auteurs semblent être des personnes et non des organisations. On constate également que les vingt premiers ont produit 21,5% du contenu sur cette période. Et nous pouvons voir combien d'articles chaque auteur a produit, ainsi que le pourcentage de ce nombre sur le nombre total d'articles pour la période. Au cas où vous vous demanderiez combien d'articles par mois, chaque auteur a produit: Code pour produire des articles mensuels par auteur Articles par mois par auteur

    Une approche descendante

    Ce qui précède était une approche exploratoire, où nous ne savions rien des auteurs. Maintenant que nous en savons un peu, nous pouvons utiliser une approche descendante. La fonction suivante prend un nombre arbitraire de noms d'auteur et trace le nombre mensuel d'articles pour chacun, afin que vous puissiez comparer deux auteurs ou plus. Commençons donc par les meilleures organisations de presse. Fonction pour tracer et comparer l'activité de publication des auteurs (articles par mois) Articles par mois pour 'fabordrabfeed', 'huffpost', 'hollywoodreporter', & 'soft' Avec toutes les données, il semble plus probable que le saut des articles dans Avril 2011 était dû à des partenariats de contenu. Nous pouvons également voir que le partenariat avec HuffingtonPost a pris fin en novembre 2013, selon le plan du site au moins. Voici les tendances des trois principaux auteurs au cours des cinq derniers trimestres. Articles par mois pour 'ryanschocket2', 'daves4' et 'noradominick'

    Analyse de contenu

    Nous arrivons maintenant à la dernière partie de l'URL - le slug qui contient les titres des articles. Jusqu'à présent, tout consistait à créer des métadonnées en catégorisant le contenu par date, catégorie, langue et auteur. Les slugs peuvent également être extraits dans leur propre colonne en utilisant la même approche. J'ai également remplacé les tirets par des espaces pour diviser et analyser plus facilement. Nouvelle colonne ajoutée "slugs" Pour jeter un œil aux slugs, j'en ai créé un sous-ensemble contenant uniquement des articles en anglais.
    Échantillon aléatoire de slugs d'articles

    La fonction 'word_frequency'

    La chose la plus simple à faire est de compter les mots dans les limaces. La fonction word_frequency fait cela pour nous. Veuillez noter que cette fonction supprime les mots vides par défaut, qui est disponible est un ensemble à explorer. Dans de nombreux cas, vous souhaiterez peut-être modifier cette liste car ce qui peut être un mot d’arrêt dans un certain contexte ne se trouve pas dans un autre. Mots les plus fréquemment utilisés dans les titres d'articles Si un mot ne transmet pas beaucoup d'informations, nous pouvons spécifier la valeur phrase_len comme 2 pour compter les phrases de deux mots (les jetons sont un autre nom pour cela). Expressions de deux mots les plus utilisées

    Sujets à analyser

    Tout comme nous avons comparé les auteurs, nous pouvons utiliser la même approche en créant une fonction similaire pour les mots, qui serviront de sujets à analyser. Fonction pour comparer l'apparence des mots sélectionnés dans le temps Ce sont les trois noms de célébrités les plus fréquemment apparus, et "quiz" semble également populaire, donc je les ai comparés les uns aux autres. Articles par mois pour 'kim kardashian', 'miley cyrus', 'justin bieber', & 'quiz' Ces données montrent que le contenu que HuffingtonPost et les autres publiaient était probablement riche en célébrités. Il montre également à quel point les quiz ont été populaires et la grande attention qu'ils leur accordent. Cela soulève la question de savoir à quoi servent ces questionnaires. Pour ce faire, nous pouvons prendre un sous-ensemble des limaces, où le mot "quiz" est présent, et compter les mots dans ces limaces uniquement. De cette façon, nous pouvons dire quels sujets ils utilisent pour leurs questionnaires. Mots apparaissant le plus souvent avec "quiz" Et maintenant, vous pouvez commencer à analyser !

    Sommaire

    Nous avons maintenant un bon aperçu de la taille et de la structure de l'ensemble de données, et nous avons repéré quelques problèmes dans les données. Pour mieux le structurer, nous avons créé quelques colonnes afin de pouvoir agréger plus facilement par langue, catégorie, auteur, date, et enfin, les titres des articles. De toute évidence, vous n'obtenez pas la vue complète sur le site Web uniquement par les plans de site, mais ils fournissent un moyen très rapide d'obtenir beaucoup d'informations sur l'activité de publication et le contenu, comme indiqué ci-dessus. La façon dont nous avons traité le "lastmod" est assez standard (de nombreux sites fournissent également l'heure de publication et pas seulement la date), mais les URL sont différentes pour chaque site. Après cette préparation et en vous familiarisant avec certains des pièges que vous pourriez rencontrer, vous pouvez maintenant commencer une analyse appropriée du contenu. Quelques idées que vous voudrez peut-être explorer: la modélisation de sujets, la cooccurrence de mots, l'extraction d'entités, le regroupement de documents, et les faire pour différentes plages de temps et pour l'un des autres paramètres disponibles que nous avons créés.

    Analyse de contenu avec des plans de site XML et Python

    S’abonner
    Notifier de
    guest
    0 Commentaires
    Inline Feedbacks
    View all comments