Como baixar todos os livros-texto gratuitos da Springer de uma só vez com Python
- Dalton Borges
- 2 de mai. de 2020
- 2 min de leitura
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