Análise de conteúdo com XML Sitemaps e Python

Análise de conteúdo com XML Sitemaps e Python
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Por onde você começaria se quisesse entender o conteúdo de um site, especialmente os grandes editores?

Normalmente, estou interessado nas seguintes perguntas:

  • Com que frequência e quanto eles publicam?
  • Existem tendências diárias, semanais, mensais ou anuais em suas atividades de publicação?
  • Sobre quais tópicos eles escrevem ou quais produtos eles vendem?
  • Quais são as tendências em seus tópicos? Quais tópicos estão ganhando volume e quais não estão?
  • Como o conteúdo ou o produto é dividido entre idiomas, regiões, categorias ou autores?

Em sua forma mais básica, os sitemaps precisam ter apenas a tag “loc” (abaixo da tag “url” principal).

Essencialmente, um sitemap pode ser simplesmente uma lista de URLs. Outras tags opcionais são permitidas, o mais importante:

  • “lastmod”,
  • “changefreq”,
  • “prioridade”,
  • E, em alguns casos, “alternativo”.

Se você tiver “lastmod” no mapa do site (e os sites com maior reputação), poderá obter todas as informações relacionadas às atividades e tendências de publicação. A riqueza de URLs determina a quantidade de informações que você pode extrair, mas lembre-se de que, se os URLs forem estruturados sem informações reais, como exemplo.com/product/12345, você não poderá obter muito do mapa do site.

O objetivo deste tutorial é tornar os sitemaps um pouco menos chatos!

Analisarei os sitemaps do BuzzFeed e, como eles têm “lastmod” e URLs consistentes e ricos, poderemos responder a todas as perguntas levantadas acima.

Isso será usado como proxy para a “data de publicação”, que não é 100% precisa porque as páginas são atualizadas. Em geral, descobri que, se as coisas mudam, tendem a fazê-lo dentro de um ou dois dias para fazer algumas correções, e a maioria não.

Python para análise

Vou usar o Python para a análise, e uma versão interativa do artigo está disponível aqui. Encorajo-vos a verificar se você quiser acompanhar. Dessa forma, você pode fazer alterações e explorar outras coisas que possam lhe interessar.

As visualizações de dados também são interativas, portanto você poderá ampliar, passar o mouse e explorar um pouco melhor. Se você não conhece nenhuma programação, pode ignorar com segurança todos os trechos de código (que explicarei de qualquer maneira).

Então vamos começar.

Para obter os sitemaps em um formato de tabela, usarei o sitemap_to_df função do pacote advertools. “df” é a abreviação de DataFrame, que é basicamente uma tabela de dados.

Você simplesmente passa o URL de um mapa do site (ou um URL de índice do mapa do site) para a função, e ele retorna os mapas do site no formato tabular. Se você fornecer um índice de mapa do site, ele percorrerá todos os subsitemaps e extrairá os URLs e quaisquer outros dados disponíveis. Além das ferramentas de publicidade, usarei pandas para manipulação de dados, bem como plotagem para visualização de dados.

função sitemap_to_df - usando Python para pesquisa Recupere sitemaps do BuzzFeed e mescle-os em um DataFrame

dados do mapa do site buzzfeed Amostras de linhas do DataFrame “buzzfeed”

O acima é um pequeno subconjunto do nosso DataFrame – “lastmod” é o índice e temos duas colunas; “loc”, que é o URL, e “sitemap”, que é o URL do mapa do site do qual o URL foi recuperado.

“NaT” significa “não é uma hora”, que é a representação de valor ausente dos objetos de data / hora. Como você pode ver, temos cerca de meio milhão de URLs para percorrer.

Extraindo categorias de Sitemap

Se você olhar para os URLs dos sitemaps, verá que eles contêm a categoria do site, por exemplo:

https://www.buzzfeed.com/sitemap/buzzfeed/2019_5.xml
https://www.buzzfeed.com/sitemap/compras/2018_13.xml

Isso pode ser útil para entender em qual categoria o URL se enquadra.

Leia Também  Os vendedores começam a sentir as tensões nos sistemas de atendimento da Amazon

Para extrair a categoria desses URLs, a linha a seguir divide os URLs XML pelo caractere de barra e pega o quinto elemento (índice 4) da lista resultante. O texto extraído será atribuído a uma nova coluna chamada sitemap_cat.

Extraindo categorias de Sitemap usando Python Categorias de sitemap extraídas e colocadas em uma nova coluna “sitemap_cat”

Agora que temos uma coluna mostrando as categorias, podemos contar quantos URLs eles têm e obter uma visão geral do volume relativo de conteúdo em cada um.

O código a seguir simplesmente conta os valores nessa coluna e formata o DataFrame resultante.

Análise de conteúdo com XML Sitemaps e Python. Imagem 3 Número de artigos por categoria, juntamente com porcentagens

É claro que o “buzzfeed” é a categoria principal, que é basicamente o site principal, e os outros são muito pequenos em comparação.

Antes de prosseguir, é importante entender melhor os valores de NaT que vimos no início. Vamos ver em que categoria eles se enquadram.

mostrando valores de NaT Categorias em que “lastmod” não está disponível (cinco primeiros)

Os cinco primeiros se enquadram no “vídeo”, mas isso é verdade para todos os valores ausentes?

A linha a seguir pega um subconjunto do DataFrame Buzzfeed (o subconjunto em que o índice contém valores ausentes) e, em seguida, pega o sitemap_cat coluna e conta o número de valores exclusivos. Como vimos que alguns valores são “video”, se o número de valores únicos for um, todas as categorias de datas ausentes se enquadram em “video”.

Mostrando categorias exclusivas onde Número de categorias exclusivas em que “lastmod” não está disponível

Descobrimos agora uma limitação em nosso conjunto de dados, que sabemos afeta 2,1% dos URLs.

Porém, não podemos saber qual a porcentagem de tráfego e / ou receita que eles representam. Não poderemos analisar problemas relacionados à data com os URLs do vídeo. Também não poderemos obter informações sobre o conteúdo desses URLs:

Avaliando dados da categoria em URLs Amostra de URLs de vídeo

Tendências de publicação

Vamos agora verificar quantos artigos eles publicam por ano e se houve ou não mais anos de publicação.

O código a seguir redefine o DataFrame por “A” (para anual) e conta as linhas para cada ano. É basicamente uma tabela dinâmica, se você estiver mais familiarizado com planilhas.

Localizando artigos por ano com dados Python Artigos por ano

Vendo dados no gráfico Gráfico de barras de artigos por ano

Podemos ver aumentos dramáticos nos artigos de 2010 (3.514) a 2011 (12k) e de 2011 a 2012 (46k).

É altamente improvável que um site possa aumentar sua atividade de publicação quase quatro vezes, duas vezes e em dois anos consecutivos. Eles podem ter feito algumas aquisições, parcerias de conteúdo ou talvez haja problemas com o conjunto de dados.

Tendências mensais

Quando verificamos os autores posteriormente, veremos uma possível resposta a esse aumento repentino. Vamos ampliar ainda mais e ver a tendência mensal.

Vendo você tendência de número de artigos por mês com Python Amostra de artigos por mês

Um grande bate-papo em barra com dados mensais de tendências de artigos Gráfico de barras de artigos por mês

Esses dados confirmam a tendência acima e mostram uma alteração ainda mais repentina.

Em abril de 2010, eles publicaram 1.249 artigos, depois de publicar 354 no mês anterior. Podemos ver algo semelhante acontecendo em abril de 2011. Agora é quase certo que este não é um crescimento natural orgânico em suas atividades editoriais.

Tendências Semanais

Também podemos dar uma olhada na tendência por dia da semana.

Análise de conteúdo com XML Sitemaps e Python. Imagem 11 Artigos publicados por dia da semana

Nada muito surpreendente aqui. Eles produzem um número bastante consistente de artigos durante a semana, quase o dobro do que produzem nos finais de semana. Você pode executar isso por períodos diferentes para verificar se há alterações ao longo de anos ou meses, por exemplo.

Tendências Anuais em Categorias

Também podemos dar uma olhada nas tendências anuais por categoria e ver se algo sai. O código a seguir percorre todas as categorias e cria uma plotagem para o número de artigos por ano.

exemplo de tendências de categoria Artigos anuais por categoria

Eu posso ver duas coisas aqui. O primeiro é o salto nos artigos de “compras” de 1.732 para 6.845 em 2019, e 2020 está no caminho certo. Parece que está funcionando bem para eles. Verificando alguns desses artigos, você pode ver que eles estão executando programas afiliados e promovendo alguns produtos.

Leia Também  Como consultar a API do Google Search Console

Segundo: quão enganoso esse gráfico pode ser. Por exemplo, o Tasty foi adquirido há relativamente pouco tempo pelo BuzzFeed, e aqui você pode vê-lo ocupando uma pequena parte do conteúdo. Mas se você verificar a página do Facebook, verá que eles têm quase cem milhões de seguidores. Portanto, lembre-se disso, seja cético e tente verificar as informações de outras fontes sempre que possível.

Estrutura de URL

Agora, podemos analisar as informações que podemos obter dos URLs, e aqui está uma amostra aleatória:

Análise de URL usando Python Amostra aleatória de URLs

O modelo geral parece estar no formato buzzfeed.com/{language}/{author}/{article-title}, E os artigos em inglês não têm “/ en /” neles.

Vamos agora criar uma nova coluna para idiomas, o que pode ser feito extraindo o padrão de duas letras que ocorrem entre duas barras. Se nada estiver disponível, ele será preenchido com “en”. Agora podemos ver o número de artigos por idioma (ou país em alguns casos).

Captura de tela mostrando como artigos por idioma usando python Número de artigos por idioma

Mostrando estatísticas de artigos por idioma Artigos por gráfico de barras de idiomas

Também podemos ver o número mensal de artigos por idioma para uma melhor visualização.

Gráfico mostrando diferentes idiomas Número de artigos por mês – por idioma

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Extraindo dados sobre autores

Agora vamos passar pelo mesmo processo para os autores. Como antes, dividimos a coluna “loc” por “https://www.semrush.com/”, extraímos o penúltimo elemento e o colocamos em uma nova coluna “author”. Depois disso, podemos contar os artigos por autor.

Mostrando dados do autor extraídos pelo Python Nova coluna adicionada “autor”

Análise de conteúdo com XML Sitemaps e Python. Imagem 18 Código para contar e formatar o número de artigos por autor

Gráfico mostrando dados do autor Número de artigos por autor (desde sempre)

“cum.%” mostra a porcentagem cumulativa do número de artigos pelos autores até a linha atual.

Os três primeiros autores geraram 6,6% do total de artigos, por exemplo (é claro que “vídeo” não é um autor, portanto o ignoraremos). Você também pode ver que alguns dos principais autores são na verdade outras organizações de notícias e não pessoas.

Eu verifiquei manualmente alguns artigos por “huffpost” e obtive um erro 404. O seguinte snippet de código passa por uma amostra aleatória de URLs em que o autor é “huffpost” e imprime o URL junto com a resposta.

Captura de tela mostrando dados Amostra aleatória de URLs e suas respostas

E esse é outro problema no conjunto de dados.

Os artigos dos principais colaboradores não existem mais. Não verifiquei todos eles, e a maneira correta é percorrer todos os meio milhão de URLs para quantificar esse problema.

A existência de um número tão grande de artigos por grandes organizações de notícias pode ser a resposta para a pergunta do aumento repentino no volume de conteúdo no BuzzFeed.

Definitivamente, é um problema ter 404 no seu mapa do site, mas, no nosso caso, é ótimo que eles não os tenham removido, porque temos uma visão melhor do histórico do site, mesmo que muitos URLs não existam mais . Isso também significa que pode haver outros URLs inexistentes que foram removidos e que não sabemos. Eu disse cético?

Com um site tão grande, você pode esperar alguns problemas, especialmente sete ou oito anos atrás, onde muitas coisas mudam e muitas não são mais relevantes. Então, vamos fazer o mesmo exercício para um período mais recente, os anos de 2019 e 2020 (primeiro trimestre).

Extraindo dados de 2020 sobre autores com Python Código para contar artigos por autor para 2019 – 2020, primeiro trimestre

Dados dos principais autores Principais autores por número de artigos para 2019 – 2020, primeiro trimestre

Agora, todos os principais autores parecem ser pessoas e não organizações.

Também podemos ver que os vinte primeiros produziram 21,5% do conteúdo nesse período. E podemos ver quantos artigos cada autor produziu, bem como a porcentagem desse número do total de artigos para o período.

Caso você esteja se perguntando quantos artigos por mês, cada autor produziu:

Python mostra o número de artigos por mês por autor Código para produzir artigos mensais por autor

Gráfico mostrando os 16 principais autores no buzzfeed Artigos por mês por autor

Uma abordagem de cima para baixo

O exposto acima foi uma abordagem exploratória, onde não sabíamos nada sobre os autores. Agora que sabemos um pouco, podemos usar uma abordagem de cima para baixo.

Leia Também  Defesa contra as artes das trevas: por que o SEO negativo é importante, mesmo que os rankings não sejam afetados

A função a seguir pega um número arbitrário de nomes de autores e plota o número mensal de artigos para cada um, para que você possa comparar dois ou mais autores. Então, vamos começar pelas principais organizações de notícias.

Dados em Python mostrando as principais organizações de notícias Função para plotar e comparar a atividade de publicação dos autores (artigos por mês)

Artigo por mês, por principais notícias Artigos por mês para ‘fabordrabfeed’, ‘huffpost’, ‘hollywoodreporter’ e ‘soft’

Com todos os dados, parece mais provável que o salto nos artigos em abril de 2011 tenha sido devido a parcerias de conteúdo. Também podemos ver que a parceria com o HuffingtonPost foi encerrada em novembro de 2013, de acordo com o mapa do site, pelo menos.

Abaixo estão as tendências dos três principais autores nos últimos cinco trimestres.

Gráfico mostrando os três principais autores Artigos por mês para ‘ryanschocket2’, ‘daves4’ e ‘noradominick’


Análise de conteúdo

Agora chegamos à parte final do URL – a lesma que contém os títulos dos artigos. Tudo até o momento era basicamente criar metadados categorizando o conteúdo por data, categoria, idioma e autor.

As lesmas também podem ser extraídas em sua própria coluna usando a mesma abordagem. Também substituí os traços por espaços para dividir e analisar mais facilmente.

Examinando lesmas de URL com dados Python Nova coluna adicionada “lesmas”

Para dar uma olhada nas lesmas, criei um subconjunto delas contendo apenas artigos em inglês.

Código para lesmas Amostra aleatória de lesmas de artigos

A função ‘word_frequency’

A coisa mais simples a fazer é contar as palavras nas lesmas. o word_frequency função faz isso por nós.

Observe que essa função remove as palavras irrelevantes por padrão, que estão disponíveis para serem exploradas. Em muitos casos, convém editar esta lista porque o que pode ser uma palavra de parada em um determinado contexto, não está em outro.

Mostrando o código word_frequency - Python Palavras usadas com mais frequência nos títulos dos artigos

Se uma palavra não está transmitindo muita informação, podemos especificar o quote_len valor como 2 para contar as frases de duas palavras (tokens é outro nome para isso).

Mostrando o valor expression_len Frases de duas palavras usadas com mais frequência

Tópicos a serem analisados

Assim como comparamos os autores, podemos usar a mesma abordagem criando uma função semelhante para as palavras, que servirão como tópicos a serem analisados.

Mostrando como comparar tópicos Função para comparar a aparência das palavras selecionadas ao longo do tempo

Esses são os três nomes de celebridades que aparecem com mais frequência, e o “questionário” também parece popular, então eu os comparei.

Gráfico mostrando os nomes das celebridades que aparecem com frequência Artigos por mês para ‘kim kardashian’, ‘miley cyrus’, ‘justin bieber’ e ‘quiz’

Esses dados mostram que provavelmente o conteúdo que o HuffingtonPost e os outros estavam publicando era pesado para celebridades. Também mostra como os questionários populares foram e o grande foco que eles estão dando a eles.

Isso levanta a questão sobre o que são esses questionários. Para fazer isso, podemos pegar um subconjunto das lesmas, onde a palavra “questionário” está presente, e contar as palavras apenas nessas lesmas. Dessa forma, podemos dizer quais tópicos eles estão usando para seus testes.

Gráfico mostrando dados do questionário do Python Palavras que aparecem com mais frequência com “teste”

E agora, você pode começar a analisar!

Sumário

Agora temos uma boa visão geral do tamanho e da estrutura do conjunto de dados e identificamos alguns problemas nos dados. Para melhor estruturá-lo, criamos algumas colunas para que possamos agregar mais facilmente por idioma, categoria, autor, data e, finalmente, os títulos dos artigos.

Obviamente, você não obtém a visualização completa no site apenas pelos mapas de site, mas eles fornecem uma maneira muito rápida de obter muitas informações sobre a atividade e o conteúdo da publicação, como visto acima. A maneira como lidamos com o “lastmod” é bastante padrão (muitos sites também fornecem a hora da publicação e não apenas a data), mas os URLs são diferentes para cada site.

Após essa preparação e familiarizando-se com algumas das possíveis armadilhas que você pode enfrentar, agora você pode iniciar uma análise adequada do conteúdo. Algumas idéias que você pode querer explorar: modelagem de tópicos, ocorrência simultânea de palavras, extração de entidades, agrupamento de documentos e execução para diferentes períodos de tempo e para qualquer um dos outros parâmetros disponíveis que criamos.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *