#!/usr/bin/env python # coding: utf-8 # # Automação Web para Busca de Cotações de Moedas # ## Entendendo a Situação Atual # Você trabalha em uma importadora e precisa atualizar diariamente uma planiha do Excel com os custos de cada produto. Esses produtos podem ter seus valores vinculados as seguintes moedas: # # - Dólar # - Euro # - Ouro # # Para obter a cotação dessas moedas, fazemos buscas na internet. Com os valores das cotações podemos atualizar nossos preços de venda, considerando uma margem de contribuição. # ## Base de Dados # O link para a base de dados está disponível no link logo abaixo: # # - https://drive.google.com/drive/folders/1KmAdo593nD8J9QBaZxPOG1yxHZua4Rtv?usp=sharing # ## Divisão do Problema # 1. Obter a cotação do dólar # 2. Obter a cotação do euro # 3. Obter a cotação do ouro # 4. Atualizar a planilha com as cotações de cada moeda # 5. Atualizar o preço de compra e o preço de venda de cada produto # 6. Exportar a planilha atualizada # ## Criando e Configurando o Navegador # In[1]: # Importa o webdriver a partir da biblioteca selenium from selenium import webdriver # Importa o gerenciador do webdriver do Google Chrome from webdriver_manager.chrome import ChromeDriverManager # Importa a classe Service from selenium.webdriver.chrome.service import Service # Faz o download do webdriver do Google Chrome servico = Service(ChromeDriverManager().install()) # Cria um navegador do Google Chrome navegador = webdriver.Chrome(service=servico) # In[2]: # Importa o método de localização de elementos from selenium.webdriver.common.by import By # Importa o Keys para escrevermos no navegador from selenium.webdriver.common.keys import Keys # ## Solução # A função abaixa será chamada repetidas vezes para obtermos cotações de moedas. # In[3]: def obter_cotacao_moeda(busca: str) -> float: '''Obtém a cotação da moeda especificada''' # Acessa o site do Google navegador.get('https://google.com') # Localiza o campo de pesquisa do Google via XPATH campo_pesquisa = navegador.find_element(By.XPATH, r'/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input') # Escreve no campo de pesquisa campo_pesquisa.send_keys(busca) # Dá enter no campo de busca campo_pesquisa.send_keys(Keys.ENTER) # Obtém a cotação do dólar cotacao = navegador.find_element(By.XPATH, r'//*[@id="knowledge-currency__updatable-data-column"]/div[1]/div[2]/span[1]').get_attribute('data-value') # Retorna a cotação return float(cotacao) # A função abaixo será usada para obter a cotação do ouro. # In[4]: def obter_cotacao_ouro(): '''Obtém a cotação do ouro''' # Acessa o site do Melhor Câmbio navegador.get('https://www.melhorcambio.com/ouro-hoje') # Localiza o campo com a cotação do ouro campo_cotacao_ouro = navegador.find_element(By.XPATH, r'//*[@id="comercial"]') # Obtém o valor da cotação do ouro cotacao_ouro = campo_cotacao_ouro.get_attribute('value') # Retorna o valor da cotação do ouro return cotacao_ouro # ### Obter a cotação do dólar # In[5]: # Obtém a cotação do dólar cotacao_dolar = obter_cotacao_moeda('cotação do dólar') # Exibe o valor da cotação do dólar print(f'Cotação do dólar: R${cotacao_dolar}') # ### Obter a cotação do euro # In[6]: # Obtém a cotação do euro cotacao_euro = obter_cotacao_moeda('cotação do euro') # Exibe o valor da cotação do euro print(f'Cotação do euro: R${cotacao_euro}') # ### Obter a cotação do ouro # In[7]: # Obtém a cotação do ouro cotacao_ouro = obter_cotacao_ouro() # Substitui a vírgula pelo ponto cotacao_ouro = cotacao_ouro.replace(',', '.') # Exibe o valor da cotação do ouro print(f'Cotação do ouro: R${cotacao_ouro}') # Dado que neste ponto já realizamos todas as buscas, podemos fechar o navegador: # In[8]: navegador.quit() # ### Atualizar a planilha com as cotações de cada moeda # In[9]: # Importa o pandas com o apelido pd import pandas as pd # Importa a base de dados df_produtos = pd.read_excel('Produtos.xlsx') # Exibe a base de dados df_produtos # In[10]: # Atualiza os valores na coluna Cotação df_produtos.loc[df_produtos['Moeda'] == 'Dólar', 'Cotação'] = float(cotacao_dolar) df_produtos.loc[df_produtos['Moeda'] == 'Euro', 'Cotação'] = float(cotacao_euro) df_produtos.loc[df_produtos['Moeda'] == 'Ouro', 'Cotação'] = float(cotacao_ouro) # Exibe o dataframe df_produtos # ### Atualizar o preço de compra e o preço de venda de cada produto # In[11]: # Recalcula o preço de compra df_produtos['Preço de Compra'] = df_produtos['Preço Original'] * df_produtos['Cotação'] # Recalcula o preço de venda df_produtos['Preço de Venda'] = df_produtos['Preço de Compra'] * df_produtos['Margem'] # Exibe o dataframe df_produtos # ### Exportar a planilha atualizada # In[12]: # Exporta a planilha para o caminho especificado df_produtos.to_excel('BaseProdutosAtualizada.xlsx', index=False)