4.3. Análise dos dados de periódicos da Hemeroteca Municipal de Lisboa#
Nesse notebook, vamos limpar e apresentar os dados coletados na HML. Buscaremos compreender o escopo do acervo digitalizado e ao mesmo tempo apresentar suas características gerais.
Atenção
Os dados da HML são escassos, visto que seu sítio não apresenta uma política de dados abertos. Os dados apresentados e analisados aqui são fruto de uma coleta realizada pelo scraper_hml e representam um esforço da pesquisa, mas que não são suficientes para uma análise mais profunda, apresentando dados incompletos e insuficientes para uma análise mais profunda.
Atenção
Atualmente está em desenvolvimento uma nova verão da HML, e sua versão beta pode ser acessada aqui . A nova versão apresenta uma interface mais moderna e intuitiva, com mais recursos de filtros e busca. No entanto, a nova versão ainda não foi oficialmente lançada e não contém todo o acervo digitalizado da HML. Portanto, a análise aqui apresentada se refere à versão atual da HML, que pode ser acessada aqui.
Coleta de dados#
Os dados foram coletados utilizando o scraper_hml, que é um scraper desenvolvido em Python utilizando a biblioteca BeautifulSoup. O scraper foi desenvolvido para coletar os dados de todos os periódicos disponíveis na HML, e os dados coletados foram salvos em um arquivo CSV.
A estrutura do HTML da HML não possui uma estrutura bem definida, e com isso há uma grande variação entre as páginas dos diretórios. Isso impossibilitou o desenvolvimento de um programa para coleta de dados mais robusto. A opção mais eficiente e possível de ser desenvolvida nessa pesquisa, foi criar um scraper para coletar as informações contidas nos metadados de cada página dos periódicos. Assim, coletamos o texto presente na tag <title>
aninhada em <head>
. Essa escolha se justifica após uma análise geral da estrutura das páginas e de constatar que essa tag continha as informações mais relevantes para a pesquisa: sempre constando o título do periódico e comummente o local e o período de publicação.
Outro dado possível foi a lista de arquivos em pdf em cada página. Para isso buscamos todos os links presentes em tags <a>
que continham o padrão pdf
no atributo href
. O mesmo foi realizado para as fichas históricas.
Entretanto, é importante destacar, que esses dados também oscilam e carecem de padrão, o que demandou um esforço na sua limpeza e tentativa de padronização. Para maiores informações sobre a coleta e limpeza desses dados, consulte o scraper_hml.
Os dados coletados são:
Título: Título do periódico
Autoria: Autoria do periódico
Período: Período disponível do periódico
Link: Link para o periódico
Fichas Históricas: Link para as fichas históricas do periódico
Quantidade de PDF: Quantidade de PDFs disponíveis do periódico
Links dos PDFs: Lista com links para os PDFs disponíveis do periódico
Apresentação dos dados#
Primeiramente, vamos importar as bibliotecas necessárias para a análise.
# importar bibliotecas
import pandas as pd
import plotly.express as px
import plotly.io as pio
import plotly.offline as py
pio.renderers.default = "notebook"
Vamos ler o arquivo CSV com os dados coletados e apresentar os dados em um DataFrame.
# abrir arquivo csv e criar dataframe
df = pd.read_csv('../../../data/hml/hemeroteca_lisboa.csv')
# visualizar as primeiras linhas do dataframe
df.head()
Título | Anos | Local | Fichas Históricas | Quantidade de PDF | Links dos PDFs | |
---|---|---|---|---|---|---|
0 | Academia Portuguesa | ['1933'] | Sem local | Sem Ficha Histórica | 11 | ['https://hemerotecadigital.cm-lisboa.pt/Perio... |
1 | O Académico: publicação bi-semanal redigida po... | [] | Sem local | Sem Ficha Histórica | 1 | ['https://hemerotecadigital.cm-lisboa.pt/Perio... |
2 | O academico: revista quinzenal litteraria | ['1878'] | Sem local | https://hemerotecadigital.cm-lisboa.pt/Periodi... | 6 | ['https://hemerotecadigital.cm-lisboa.pt/Perio... |
3 | O Académico: semanário ilustrado | ['1902-1903'] | Sem local | https://hemerotecadigital.cm-lisboa.pt/Periodi... | 8 | ['https://hemerotecadigital.cm-lisboa.pt/Perio... |
4 | AccaoColonial_NComemorativo | ['1934'] | Sem local | Sem Ficha Histórica | 1 | ['https://hemerotecadigital.cm-lisboa.pt/Perio... |
# mostrar colunas do dataframe
df.columns.tolist()
['Título',
'Anos',
'Local',
'Fichas Históricas',
'Quantidade de PDF',
'Links dos PDFs']
Quantidade de itens no acervo#
Vamos verificar a quantidade de itens no acervo da HML, contando os valores únicos da coluna Título
.
# contar valores únicos da coluna 'Título' e mostrar a soma
df['Título'].nunique()
349
Local#
Mostrar itens que possuem identificação de local.
# contar cada valor na coluna 'Local'
df['Local'].value_counts()
Sem local 260
Lisboa 57
Coimbra 9
Rio de Janeiro 6
Porto 5
Paris 3
Lisboa e Rio de Janeiro 1
Praia 1
Lourenço Marques 1
Nova Goa 1
Washington 1
Luanda 1
Díli 1
Bolama 1
Macau 1
Madrid 1
Name: Local, dtype: int64
Fichas Históricas#
Vamos avaliar a quantidade de itens no acervo que não possuem fichas históricas e a porcentagem de itens que possuem fichas históricas.
# itens sem ficha histórica
df['Fichas Históricas'].value_counts()['Sem Ficha Histórica']
147
# cálculo de itens com ficha histórica
com_ficha = df['Título'].nunique()-df['Fichas Históricas'].value_counts()['Sem Ficha Histórica']
com_ficha
202
# porcentagem de itens com ficha histórica
porcentagem = com_ficha/df['Título'].nunique()*100
porcentagem
57.879656160458445
Ou seja, entre os 349 itens no acervo, 202 possuem fichas históricas, o que representa 57,88% do acervo. Enquanto 147 itens não possuem fichas históricas, o que representa 42,12% do acervo.
Datas#
Em relação às datas, teremos menos condições de realizar avaliações mais profundas, visto que os dados coletados carecem de padronização e estão incompletos.