ferramentas_scielo_v2

Esse repositório é parte dos projetos desenvolvidos pelos membros do LABHDUFBA e tem como objetivo oferecer ferramentas de raspagem, organização e análise de artigos ciêntíficos publicados na plataforma Scielo.br.

https://github.com/ericbrasiln/ferramentas_scielo_v2

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (5.5%) to scientific vocabulary

Keywords

digital-humanities python scielo-xml web-scraping
Last synced: 6 months ago · JSON representation ·

Repository

Esse repositório é parte dos projetos desenvolvidos pelos membros do LABHDUFBA e tem como objetivo oferecer ferramentas de raspagem, organização e análise de artigos ciêntíficos publicados na plataforma Scielo.br.

Basic Info
Statistics
  • Stars: 5
  • Watchers: 1
  • Forks: 2
  • Open Issues: 0
  • Releases: 0
Topics
digital-humanities python scielo-xml web-scraping
Created over 4 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

Ferramentas Scielo v2

DOI License: MIT made-with-python

Veja a documentação completa em https://labhdufba.github.io/ferramentasscielov2/


No ano de 2020, desenvolvemos uma ferramenta para raspagem da base de artigos do Scielo.br. A ferramenta, escrita em Python, utilizava a biblioteca BeautifulSoup para coletar os dados. Entretanto, em 2021 o repositório Scielo.br passou por uma reestruturação completa.

Foi necessário, consequentemente, a reconstrução da ferramenta para lidar com a nova versão do site. Agora, utilizamos o Selenium para acessar e raspar os dados do repositório.

Com a ferramentas_scielo_v2 é possível realizar a raspagem por área do conhecimento ou por revista (ou uma lista de revistas). Também é possível optar pelo tipo de raspagem: apenas XML ou XML e PDFs.

Também disponibilizamos uma ferramenta para converter os XMLs para CSV, com o script scielo_xml_to_csv/run.py.

Instalação

Pré-requisitos

Para executar a ferramenta é preciso clonar ou fazer download do repositório para sua máquina. Antes de executar os scripts, é preciso preparar seu computador, como mostramos abaixo.

A ferramentas desse projeto foram escritas em Python 3.8. Portanto, para executar o arquivo .py é preciso instalar o Python3 em seu computador.

Clique aqui para acessar um tutorial de instalação do Python no Windows, clique aqui para Linux e clique aqui para Mac.

Após a instalação do Python é preciso instalar as bibliotecas necessárias para a ferramenta ser executada. Para isso, basta executar o comando pip3 install -r requirements.txt no terminal, a partir da pasta onde está o arquivo. Para saber mais sobre instalação de bibliotecas com pip, veja essa lição do Programming Historian.

  1. Acesse o diretório em que o arquivo requirements.txt está salvo: {.sh .bash} $ cd <caminho para a pasta>
  2. Instale as bibliotecas requeridas com o seguinte comando: {.python} pip3 install -r requirements.txt

WebDriver e Navegador

Para que a ferramenta funcione, é necessário ter instalado o navegador Mozilla Firefox. Além disso, é necessário ter instalado o WebDriver do Mozilla Firefox, GeckoDriver.

Para acessar a versão mais recente do GeckoDriver visite o repositório do Mozilla no GitHub. É possível encontrar mais informações oficiais aqui.

Para inserir o webdriver no PATH de sistemas Unix e Windows, leia essa questão no StackOverflow.

Agora é possível executar a ferramenta direto do prompt de comando do Windows ou pelo terminal do Linux, ou utilizar as diversas IDE disponíveis.

Utilização

Na pasta da ferramenta existem dois arquivos python que permitem a execução de opções distintas de raspagem. O primeiro, scielo_v2.py, permite a raspagem de todas as revistas de uma determinada área do conhecimento. O segundo, scielo_rev_v2.py, permite a raspagem por revista ou lista de revistas específicas.

Raspagem por área de conhecimento

Esse script permite ao usuário selecionar qual assunto pretende raspar de acordo com a categorização estabelecida pela plataforma Scielo.br.

Para isso é preciso executar o seguinte comando, do interior da pasta onde o arquivo está localizado:

{.sh} python3 scielo_v2.py A seguinte mensagem será exibida:

```{.python} -=-Definição da área temática-=-

  • Opções: 1- Ciências Agrárias 2- Ciências Biológicas 3- Ciências da Saúde 4- Ciências Exatas e da Terra 5- Ciências Humanas 6- Ciências Sociais Aplicadas 7- Engenharias 8- Linguística, Letras e Artes Digite o número correspondente à área temática que deseja raspar: ``` Após a definição do assunto, é preciso definir o tipo de raspagem:
  1. Realizar a raspagem de todos os arquivos XML de todas as edições de todas as revistas da área selecionada: opção 1;
  2. Realizar a raspagem de todos os arquivos XML e PDF de todas as edições de todas as revistas da área selecionada: opção 2.

:warning: Devido ao volume de dados, contando dezenas de milhares de artigos, o download de todos os arquivos PDF demandará muito tempo e uso intenso de sua máquina.

:warning: Os arquivos XML possuem todos os metadados dos artigos, incluindo o texto completo e as referências bibliográficas.

Raspagem por revista ou por lista de revistas

Nesse script é possível raspar uma revista ou uma lista de revistas específicas através de seu nome.

Possui as mesmas características do scielo_v2.py, porém a definição da(s) revista(s) a ser(em) raspada(s) é feita através da abreviação do nome da revista conforme URL da revista no site do Scielo.br.

Por exemplo, se vc pretende raspar os arquivos da revista Almanack, acesse a página inicial da revista no repositório e encontre a abreviação de seu título na URL.

{.html} https://www.scielo.br/j/alm/

Nesse caso, o abreviação do nome da revista é alm. Esse termo deve ser informado para o programa.

```{.sh} -=- Definição da(s) revista(s) -=-

Digite a abreviação da revista que deseja raspar: alm Deseja inserir outra? [S/N] ```

:warning: Atenção

Ambos os scripts criarão diretórios para armazenar os arquivos e dados.

  • scielo/{AAAA-MM-DD}/PDF/{nomeDaRevista} no caso da raspagem de PDFs;
  • scielo/{AAAA-MM-DD}/XML/{nomeDaRevista} no caso da raspagem de XMls.

Entretanto, se a pasta com o nome de uma revista já existir no mesmo caminho que o programa está sendo executado, só serão baixados arquivos que ainda não existem.

Conversão de XML para CSV

Após o download dos arquivos XML é possível utilizar a ferramenta scielo_xml_to_csv para converter todos os XML para um arquivo csv.

Acesse a pasta scielo_xml_to_csv e execute o arquivo run.py.

Esses scripts têm como objetivos analisar, selecionar, organizar e salvar informações de um dataset de arquivos XML de todas as revistas previamente baixados em um arquivo CSV.

O run.py acessa o diretório contendo as pastas de cada revista e analisa cada XML, inserindo os dados em um arquivo CSV salvo com o nome metadata_{revista}.csv.

:warning: É preciso definir o caminho do diretório com o dataset. E a estrutura desse dataset deve conter diretórios de cada revista (ou edições) com seus arquivos XML a serem analisados.

As seguintes informações são inseridas no CSV:

  • index,
  • file_name: nome do arquivo,
  • article_id: identificação do arquivo,
  • article_category: categoria do arquivo,
  • authors: lista de autores,
  • contact_email: e-mail do/a autor/a principal
  • authors affiliation: lista de filiações,
  • article_title: título do artigo,
  • journal_title: título do revista,
  • journal_issn: ISSN da revista,
  • journal_publisher: instituição da revista,
  • pub_date: ano da publicação,
  • abstract: resumo,
  • key_words: lista de palavras-chave,
  • issue: edição,
  • num: número,
  • doi: DOI,
  • full_text: texto completo do artigo,
  • footnotes: notas de rodapé,
  • refs: lista (contendo listas) das referências bibliográficas.

Em seguida, com a função df_final(), todos os arquivos CSV são unidos em um único dataframe com Pandas e salvos em um CSV chamado metadata_scielo_{yyyy-mm-dd_H-M-S}.csv.


Elementos presentes nesse repositório foram retirados de ScieloJournalMetadata_Downoader, criado por johnsgomez

Como citar?

É possível clicar em Cite this repository na aba à direita nesse repositório para acessar a citação nos formatos APA e BibTex, ou ainda acessar o arquivo da citação em formato .cff.

Abaixo a citação no formato BibTex:

@software{brasil_eric_2022_5168727, author = {Brasil, Eric and Nascimento, Leonardo and Andrade, Gabriel and Barbosa, Jorge}, title = {Ferramentas Scielo v2}, month = sep, year = 2022, note = {{Se você utilizar esse programa, por favor cite como referenciado abaixo.}}, publisher = {Zenodo}, version = {2.2}, doi = {10.5281/zenodo.5168727}, url = {https://doi.org/10.5281/zenodo.5168727} }

Licença

MIT Licence

2021 Eric Brasil (IHL/UNILAB, LABHDUFBA), Gabriel Andrade (UFBA, LABHDUFBA), Leonardo Nascimento (UFBA, LABHDUFBA) Jorge Barbosa (PPGCS/UFBA, LABHDUFBA)

Owner

  • Name: Eric Brasil
  • Login: ericbrasiln
  • Kind: user
  • Location: São Francisco do Conde, BA
  • Company: Universidade da Integração Internacional do Lusofonia Afro-brasileira

Professor at Institute of Humanities and Languages, UNILAB | Visiting Researcher - DH_Lab NOVA-FCSH | Researcher - @LABHDUFBA | Editor - @programminghistorian

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Ferramentas Scielo v2
message: >-
  Se você utilizar esse programa, por favor cite como
  referenciado abaixo.
type: software
version: 2.2
doi: 10.5281/zenodo.5168727
date-released: 2022-09-23
url: "https://github.com/LABHDUFBA/ferramentas_scielo_v2"
authors:
  - given-names: Eric
    family-names: Brasil
    email: ericbrasiln@protonmail.com
    affiliation: IHL/UNILAB
    orcid: 'https://orcid.org/0000-0001-5067-8475'
  - given-names: Leonardo
    family-names: Nascimento
    affiliation: UFBA
    orcid: 'https://orcid.org/0000-0003-2929-1115'
    email: contato@leofn.com
  - given-names: Gabriel
    family-names: Andrade
    email: gabriel.andrad4@gmail.com
    affiliation: UFBA
  - given-names: Jorge
    family-names: Barbosa
    email: jhsbarbosa@gmail.com
    affiliation: UFBA

GitHub Events

Total
  • Issue comment event: 1
  • Push event: 2
  • Pull request review event: 2
  • Pull request event: 5
Last Year
  • Issue comment event: 1
  • Push event: 2
  • Pull request review event: 2
  • Pull request event: 5

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • gabrielsandrade (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

requirements.txt pypi
  • bs4 ==0.0.1
  • pandas ==1.0.5
  • selenium ==3.141.0
  • webdriver-manager ==3.2.2
  • wget ==3.2
scielo_xml_to_csv/requirements.txt pypi
  • bs4 ==0.0.1
  • pandas ==1.0.5