top of page

Como baixar todos os livros-texto gratuitos da Springer de uma só vez com Python

Atualizado: 3 de mai. de 2020


Recebemos uma excelente notícia da Editora Springer há algum tempo. Apenas durante o período de quarentena, mais de 400 livros estarão disponíveis gratuitamente no site da editora. Trata-se de uma bela iniciativa para amenizar os impactos da COVID-19 no sistema educacional, ainda mais por se tratar de livros de alto custo de aquisição.


Como não sabemos a data que marcará o fim da quarentena para eles e a quantidade de títulos interessantes é enorme, por vezes nos vemos tentados a baixar todos os livros e, depois, com calma, selecionar aqueles mais interessantes para nós. No entanto, haja paciência pra baixar todos esses livros um a um, que por sinal são disponibilizados em mais de um formato.


Sendo assim, fiz a adaptação de um script em Python, originalmente disponibilizado por Joe T. Santhanavanich, um usuário do GitHub. As adaptações são:

  • Acrescentei um link direto com o arquivo em Excel da Springer, sem a necessidade de download prévio;

  • Você pode escolher o diretório de download ao rodar o código.

  • Adicionalmente aos arquivos em .pdf, o código foi ajustado para realizar download dos arquivos em .epub.

Você precisará instalar as bibliotecas "pandas", "wget" e "requests" na sua máquina, caso não as tenha ainda. Para isso execute as seguintes linhas de comando:

$ pip install pandas
$ pip install wget
$ pip install requests

Caso você deseje instalar as bibliotecas diretamente de um Jupyter Notebook, basta substituir "$" por "!" e retirar o espaço entre o caracter especial e "pip". No caso de pandas, ficaria assim: !pip install pandas.


Agora é só rodar o script abaixo. Está tudo comentado, pra caso você queira realizar modificações.

#Importe as bibliotecas
import requests, wget
import pandas as pd

#Leia o excel disponibilizado pela Springer
df = pd.read_excel("https://resource-cms.springernature.com/springer-cms/rest/v1/content/17858272/data/v4")

#Pergunte ao usuário onde deseja salvar os livros.
print("Qual o diretório de onde você quer salvar os livros?")
diretorio = input()

#Loop para ler as linhas do csv e baixar os livros em .pdf e .epub
for index, row in df.iterrows():
    try: # Alguns livros estão apenas em .pdf. Por isso ignoraremos possíveis erros.
        
        # loop no Excel
        livro = f"{row.loc['Book Title']}_{row.loc['Edition']}".replace('/','-').replace(':','-')
        url = f"{row.loc['OpenURL']}"
        r = requests.get(url)
        
        # Baixando o livro em .pdf.
        download_url_pdf = f"{r.url.replace('book','content/pdf')}.pdf"
        wget.download(download_url_pdf, f"{diretorio}/{livro}.pdf") 
        print(f"Você baixou {livro}.pdf!")
        
        # Baixando o livro em .epub.
        download_url_epub = f"{r.url.replace('book','download/epub')}.epub"
        wget.download(download_url_epub, f"{diretorio}/{livro}.epub")
        print(f"Você baixou {livro}.epub!")
        
    except:
        pass
        
print("Todos os livros foram baixados.")

E é isso! Abraço.

Dalton

 
 
 

Comments


Copyright © 2024 | Dalton Borges - Website criado pelo proprietário

Get in touch!

Caso tenha dúvidas, sugestões ou propostas de colaboração, me envie um e-mail. 

Networks

Caso queira jogar conversa fora, me adicione no Facebook.

bottom of page