Skip to content

Instantly share code, notes, and snippets.

@isaqueprofeta
Last active June 22, 2020 13:36
Show Gist options
  • Save isaqueprofeta/e21514247e09f697b62b5148b32a1bfb to your computer and use it in GitHub Desktop.
Save isaqueprofeta/e21514247e09f697b62b5148b32a1bfb to your computer and use it in GitHub Desktop.
Download dos livros grátis da Springer
import requests
import csv
import os
# PREREQUISITOS:
# Python3.6 com bilbioteca Requests
# Script para download dos livros:
# https://www.hardmob.com.br/threads/744521-Springer-PDF-Livros-da-Editora-Springer-DE-GRACA-negocios-engenharia-medicina
# Download do CSV da lista disponibilizada
lista_livros = requests.get(
'https://docs.google.com/spreadsheets/d/1HzdumNltTj2SHmCv3SRdoub8SvpIEn75fa4Q23x0keU/export?format=csv&id=1HzdumNltTj2SHmCv3SRdoub8SvpIEn75fa4Q23x0keU'
)
# Leitura da lista para uma variável
planilha = csv.reader(
lista_livros.content.decode('utf-8').splitlines(),
delimiter=','
)
# Cria uma lista de livros para remover o cabeçalho do CSV
livros = list(planilha)
livros.pop(0)
# Para cada livro da lista
for livro in livros:
# Lendo o CSV antes de começar, o nome está na primeira posição dos dados
nome_livro = livro[0].replace('/', '-')
# Fazendo o download manualmente, e estudando os links da para ver
# que o formato do link de download é = DOI%2FISBN
doi_isbn = livro[17].split('/')[3] + '%2F' + livro[17].split('/')[4]
# Fazendo o download manualmente, e estudando os links
# pego a URL e junto ela com o link de download
link_download = f'https://link.springer.com/content/pdf/{doi_isbn}'
# Lendo o CSV antes de começar, os generos do livro estão na 20a posição
# separados por ponto e virgula, então pego apenas o primeiro genero
pasta_genero = f'./{livro[19].split(';')[0]}/'
# Crio a pasta de genero se ela não existir
if not os.path.isdir(pasta_genero):
print(f'Criando diretório: {pasta_genero}')
os.mkdir(pasta_genero)
# Aviso onde estou e que vou começar o download
print(f'Fazendo download do livro: {nome_livro} na pasta {pasta_genero}')
# Executo do download em memória
download = requests.get(link_download)
# Salvo o arquivo em disco
open(f'{pasta_genero}{nome_livro}.pdf',
'wb').write(download.content)
@rubenspasa
Copy link

Estou tendo este erro:
SyntaxError: Non-ASCII character '\xc3' in file download_springer.py on line 16, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

@isaqueprofeta
Copy link
Author

@rubenspasa seu problema é com os pré-requisitos definidos no início do código e que não estão sendo satisfeitos pelo seu ambiente.

@rubenspasa
Copy link

Certo, vou ver se ajusto isso.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment