Ir para o conteúdo

Visualização e Qualidade de Dados no Wikidata/Abordagens Computacionais/Pywikibot

De Wikiversidade


Pywikibot

Conteúdo

Pywikibot é uma biblioteca e conjunto de implementação em Python desenvolvidos para automatizar tarefas em wikis do MediaWiki (incluindo todos os projetos Wikimedia, como Wikipedia e Wikidata). Originalmente criado para auxiliar edições automatizadas na Wikipédia, o Pywikibot evoluiu para tornar-se uma ferramenta amplamente utilizada em diversos projetos da Fundação Wikimedia e também em instalações independentes do MediaWiki.

Na essência, o Pywikibot fornece uma interface em Python para a API do MediaWiki, abstraindo detalhes de requisições HTTP e permitindo que desenvolvedores escrevam bots de forma relativamente simples. Com ele, é possível escrever códigos que leem e modificam páginas, adicionam ou removem categorias, inserem referências, migram conteúdos, entre muitas outras atividades repetitivas, tudo isso de modo automatizado e conforme as regras de bot do projeto. A biblioteca cuida de aspectos importantes como autenticação, limites de taxa (rate limiting), tratamento de exceções e repetição de tentativas em caso de falhas temporárias, facilitando a vida de quem programa bots.

O Pywikibot vem acompanhado de diversos códigos prontos (códigos utilitários) para tarefas comuns, por exemplo, um código para substituir texto em múltiplas páginas, outro para criar itens no Wikidata a partir de uma lista, etc. Esses códigos podem ser configurados e executados diretamente por usuários sem muito conhecimento de programação. Alternativamente, desenvolvedores podem usar o framework Pywikibot em seus próprios códigos Python, aproveitando as classes e métodos para navegar entre páginas, itens e propriedades.

Em suma, o Pywikibot atua como framework de bot para o universo Wikimedia, tornando viável a manutenção de projetos massivos como a Wikipédia e o Wikidata por meio de contribuições automatizadas. Seu uso adequado pode ajudar a manter os dados consistentes, acrescentar informações em massa, ou realizar correções padronizadas.

"""
Script de exemplo para acessar dados do Wikidata usando a biblioteca Pywikibot.
Demonstra como carregar um item específico e analisar suas declarações (claims).
"""

import pywikibot

# Configura a conexão com o Wikidata
# Primeiro parâmetro: projeto (wikidata)
# Segundo parâmetro: família de sites (wikidata)
site = pywikibot.Site("wikidata", "wikidata")

# Obtém o repositório de dados para operações com entidades do Wikidata
# Este objeto permite acessar itens, propriedades e outras entidades estruturadas
repo = site.data_repository()

# Carrega o item Douglas Adams (Q42) - famoso autor de "O Guia do Mochileiro das Galáxias"
# Q42 é o identificador único do Douglas Adams no Wikidata
item = pywikibot.ItemPage(repo, "Q42")

# Obtém os dados do item via API do Wikidata
# Este método faz uma requisição HTTP para buscar todos os dados do item
# Inclui labels, descrições, aliases e todas as declarações (claims)
item.get()

# Itera pelas primeiras 5 propriedades para demonstrar a estrutura de dados
# claims é um dicionário onde:
# - Chave: ID da propriedade (ex: P31 para "instância de")
# - Valor: lista de declarações para essa propriedade
claims = item.claims

# list(claims.items())[:5] converte o dicionário em lista e pega os primeiros 5 elementos
# Isso evita processar todos os dados em itens muito populados
for prop_id, claim_list in list(claims.items())[:5]:
    num_refs = 0  # Inicializa contador de referências
    
    # Verifica se existe pelo menos uma declaração para esta propriedade
    if claim_list:
        # claim_list[0] acessa a primeira declaração desta propriedade
        # .sources retorna a lista de fontes/referências desta declaração
        # len() conta quantas referências existem
        num_refs = len(claim_list[0].sources)
    
    # Exibe o ID da propriedade e número de referências da primeira declaração
    # Formato: "P31: 2 referência(s)"
    print(f"{prop_id}: {num_refs} referência(s)")

# Exemplo de saída esperada:
# P31: 1 referência(s)  [instância de: ser humano]
# P569: 1 referência(s) [data de nascimento: 1952-03-11]
# P570: 1 referência(s) [data de falecimento: 2001-05-11]
# P19: 2 referência(s)  [local de nascimento: Cambridge]
# P20: 1 referência(s)  [local de falecimento: Santa Barbara]

"""
1. Estrutura de dados do Wikidata:
   - Cada item (Q...) pode ter múltiplas propriedades (P...)
   - Cada propriedade pode ter múltiplas declarações (claims)
   - Cada declaração pode ter múltiplas referências (sources)

2. Uso:
   - item.get() carrega TODOS os dados do item, o que pode ser pesado para itens muito populados
   - [:5] limita a análise às 5 primeiras propriedades para demonstração

3. Expansões possíveis:
   - Para obter labels das propriedades: repo.getPropertyLabel(prop_id)
   - Para acessar valores das declarações: claim_list[0].getTarget()
   - Para iterar por todas as declarações de uma propriedade, não apenas a primeira
"""

Conteúdos audiovisuais

Quiz

Caro(a) aluno(a), lembre-se que o quiz é uma autoavaliação.

1

O que é o Pywikibot?

Uma biblioteca Python para automatizar tarefas em wikis do MediaWiki
Um editor de texto avançado para escrever artigos da Wikipedia
Um novo tipo de banco de dados usado pela Wikimedia Foundation
Uma linguagem de programação alternativa ao Python

2

Qual é a função principal do Pywikibot?

Fornecer uma interface em Python para a API do MediaWiki
Substituir completamente a interface web dos projetos Wikimedia
Criar backups automáticos de todos os projetos Wikimedia
Gerar relatórios estatísticos sobre o uso dos sites

3

Quais projetos Wikimedia podem ser acessados usando Pywikibot?

Wikipedia, Wikidata e todos os outros projetos Wikimedia
Apenas a Wikipedia em inglês
Somente o Wikidata
Apenas o Wikimedia Commons

4

Que tipo de tarefas o Pywikibot pode automatizar?

Ler e modificar páginas, adicionar categorias, inserir referências
Criar novos projetos Wikimedia independentes
Alterar as configurações de servidor da Wikimedia
Substituir os administradores humanos nos projetos

5

O Pywikibot inclui apenas a biblioteca para desenvolvedores?

Sim, é apenas para programadores Python experientes
Não, inclui códigos prontos para usuários sem grande conhecimento de programação
Sim, requer sempre conhecimento avançado de programação
Não, é apenas uma interface gráfica para edição manual

6

Quais aspectos técnicos o Pywikibot gerencia automaticamente?

Autenticação, limites de taxa e tratamento de exceções
A escolha de quais projetos editar
A qualidade do conteúdo inserido
A aprovação das edições por administradores

7

Qual é uma vantagem do uso adequado do Pywikibot?

Manter dados consistentes e acrescentar informações em massa
Substituir completamente a edição humana nos projetos
Ignorar todas as regras e políticas dos projetos Wikimedia
Criar versões privadas dos projetos Wikimedia

8

O Pywikibot foi originalmente criado para qual propósito?

Auxiliar edições automatizadas na Wikipédia
Gerenciar os servidores da Wikimedia Foundation
Criar uma nova versão do software MediaWiki
Substituir a API oficial do MediaWiki

Conteúdo adicional

Discussão