Galera, vamos lá.
A empresa que eu trabalho usa um sistema web para fazer vistorias em veículos e disponibiliza APIs para integração. No sistema web não é possível baixar todos os laudos de vistoria de uma vez, então estamos tentando usar uma API pra isso. Como queremos baixar todas as antigas, fizemos:
-
uma função que cria uma lista com um intervalo de datas:
def rangeData():
dRan = pd.date_range(start=‘2020-09-10’, end=‘2020-09-16’)
res = dRan.strftime(’%Y/%m/%d’)
return res -
outra função que percorre a lista anterior e cria um dicionário com todas as informações das vistorias realizadas em cada data:
def rangeVist(res):
for data in res:
url = ‘https://apivex2.vexsoft.com.br/vistorias/’ + tokenbh + ‘/’ + data + ‘’
listaVistorias = requests.get(url)
jsonVistorias = listaVistorias.text
jsonManip = json.loads(jsonVistorias)
time.sleep(100)
return jsonManip -
uma última função que percorre esse dicionário e, primeiro, cria uma nova lista apenas com os IDs das vistorias e, depois, percorre a lista de IDs e baixa o pdf de cada vistoria:
def baixaPdf(jsonManip):
listAux = []
listData = []for vistoria in jsonManip['data']: listAux.append(vistoria['id']) listData.append(vistoria['data']) for id, data in zip(listAux, listData): varId = id varData = data.strftime('%Y-%m-%d') url = 'https://api.vexsoft.com.br/empresa/' + tokenbh + '/vistorias/' + varId + '/pdf' response = requests.get(url) with open('Vistoria-' + varId + '-' + varData + '.pdf', 'wb') as f: f.write(response.content) time.sleep(100)
Porém, ao executar recebo os erros abaixo:
Traceback (most recent call last):
File “C:\Users\lorrane.ramos\PycharmProjects\integravex\venv\lib\site-packages\urllib3\connection.py”, line 159, in _new_conn
conn = connection.create_connection(
File “C:\Users\lorrane.ramos\PycharmProjects\integravex\venv\lib\site-packages\urllib3\util\connection.py”, line 61, in create_connection
for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
File “C:\Users\lorrane.ramos\AppData\Local\Programs\Python\Python38-32\lib\socket.py”, line 918, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “C:\Users\lorrane.ramos\PycharmProjects\integravex\venv\lib\site-packages\urllib3\connectionpool.py”, line 670, in urlopen
httplib_response = self._make_request(
File “C:\Users\lorrane.ramos\PycharmProjects\integravex\venv\lib\site-packages\urllib3\connectionpool.py”, line 381, in _make_request
self._validate_conn(conn)
File “C:\Users\lorrane.ramos\PycharmProjects\integravex\venv\lib\site-packages\urllib3\connectionpool.py”, line 978, in _validate_conn
conn.connect()
File “C:\Users\lorrane.ramos\PycharmProjects\integravex\venv\lib\site-packages\urllib3\connection.py”, line 309, in connect
conn = self._new_conn()
File “C:\Users\lorrane.ramos\PycharmProjects\integravex\venv\lib\site-packages\urllib3\connection.py”, line 171, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x0A1E7568>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed
Sobre o Erro 11001, achei num outro fórum que deve fazer o import do socket antes e colocar a url e a porta, mas retornou o mesmo erro.