Jump to content

Thanael

Pessoal da TecnoSpeed
  • Contagem de Conteúdo

    204
  • Ingressou

  • Última visita

  • Dias Ganhos

    26

Thanael ganhou o dia em Fevereiro 11

Thanael teve o conteúdo mais curtido!

4 Seguidores

Informações Pessoais

  • Cidade
    Porto Vitória
  • Estado
    Paraná (PR)

Clientes & Parceiros

  • Você é um cliente TecnoSpeed?
    Não
  • Você é um parceiro da Casa do Desenvolvedor?
    Não

Visitantes Recentes do Perfil

1.505 visualizações do perfil

Conquistas de Thanael

  1. Olá @diegosposito. Pela imagem que mandou, mostra que você já tem ele devidamente instalado. Quando você tenta importar e utilizar ele acontece algum erro ? Na teoria está tudo certo. O PyAutogui age realizando comandos através de sua máquina, ou seja é possível controlar o mouse e teclado através do Python, poderia explicar um pouco mais da sua situação? Problemas ou até mesmo o que está tentando realizar.
  2. Olá @lnsnts tudo bem ? Para lhe auxiliar da melhor forma consegue me mandar o Trecho do LOOP. (Obs recomendo usar a opção de adicionar código para que ele mantenha a formatação e facilite no entendimento) Ou caso prefira pode mandar o Print do código mostrando o LOOP que ai vai facilitar para lhe auxiliar. Uma dica, caso esteja usando um WHILE e Try/Except recomendo verificar a lógica para que ele saia do LOOP, uma sugestão é adicionar um BREAK dentro do Except. Dito isto, aguardo sua resposta com o código ou print para facilitar com que outros membros possam lhe ajudar. 👍
  3. Thanael

    Python e Selenium

    Olá @jorgepedro7 tudo bem ? Existem inúmeras formas de obter o elemento, vendo que já tentou algumas mais populares recomendo mudar sua abordagem. Tenta utilizar uma abordagem voltada a pegar o próprio <button> pelo. driver.find_element(By.TAG_NAME, 'button') Uma dica é verifica o caminho do botão, as vezes é mais simples pegar o elemento PAI e através dele achar o botão... Exemplo <div id='div_button'> <button> Click here </button> </div> Perceba que somente pelo <button> é complicado visto que ele não tem identificador como ID, Class etc. Portanto é mais simples obtermos o elemento pai (DIV) que possui um identificador e através dele verificar os botões que existem. Outra dica é se existir mais de um botão pode fazer um for e simplesmente verificar o texto do botão para selecionar o que deseja. Espero que essa ideia de abordagem possa lhe auxiliar, caso contrário sugiro mandar o trecho do HTML que contém o botão, deixando mais fácil para ajudá-lo.
  4. Olá @pedrohenrique tudo bem? Uma maneira simples de corrigir isso é usando a tratativa de erros com o Try/Except. Aí funcionará como esperado segue abaixo o código. Operação = input ("""Por favor digite o operador que deseja: + Para adição - Para subtração * Para multiplicação / Para divisão\n""") try: # Pode deixar INT caso não queira casas decimais num_1 = float(input('Número 1:')) num_2 = float(input('Número 2:')) if Operação == '+': print('{} + {} = {}'.format(num_1, num_2, num_1 + num_2)) elif Operação == '*': print('{} * {} = {}'.format(num_1, num_2, num_1 * num_2)) elif Operação == '-': print('{} - {} = {}'.format(num_1, num_2, num_1 - num_2)) elif Operação == '/': print('{} / {} = {}'.format(num_1, num_2, num_1 / num_2)) else: print ('Acho que você errou, tente novamente!') except: print('Digite apenas números') Essa é uma das maneiras de realizar isso, lembrando que existem N outras. Espero ter te ajudado caso contrario estou a disposição.
  5. Olá pessoal tudo bem? Vou mostrar uma forma simples de realizar o Unpivot nos dados atravês da função melt( ) do Pandas. Porém, primeiramente vou explicar o que é este Unpivot e sua utilidade. Unpivot O Unpivot consiste no ato de "Girar uma tabela transformando colunas em linhas.". Pode parecer confuso, mas na imagem abaixo vai ficar mais simples de entender. Quando usar Essa técnica é muito utilizada na manipulação dos dados para padronizar a estrutura dos dados, perceba que é muito mais simples trabalhar com os dados com as colunas (Attributes e Values) do que precisar trabalhar com todos as N colunas que existiam anteriormente (A1, A2, A3 e assim por diante). Algumas das utilizações mais comuns são em dados provindos de planilhas, no qual a estrutura da planilha é muito similar a primeira tabela da Imagem (Colunas: A1, A2, A3 e etc) por ser uma estrutura mais fácil de trabalhar em planilhas. Porém, esse tipo de estrutura é muito difícil de se trabalhar em programação ou de armazenar e manipular elas em Banco de dados. Como realizar esse processo de Unpivot nos dados em Python Primeiramente vou mostrar aqui a estrutura de dados na qual vou estar trabalhando. Perceba que na estrutura de dados a seguir as colunas sobre os Vendedores estão na seguinte forma (VendedorA, VendedorB, VendedorC e VendedorD). Essa estrutura não é muito simples de se trabalhar em um banco de dados, por exemplo, e como pretendemos levar essas informações para o banco de dados precisamos realizar a adaptação desses dados para um formato mais simples de se trabalhar. pandas.melt( ) Para realizar esse Unpivot nos dados vamos usar a função pandas.melt (Link para documentação com alguns exemplos práticos). pd.melt( df , id_vars=['Data','Loja'], value_vars=['VendedorA','VendedorB','VendedorC','VendedorD'], var_name = 'Vendedor', value_name = 'Valor' ).sort_values(by = ['Data','Loja']) Obs: caso as colunas que desejo fazer o Unpivot seja algo que possa variar existem outras formas obtê-las, por exemplo. Desta forma vai trazer todas as colunas menos as que não desejo fazer o Unpivot. (coloca esse comando no value_vars) [coluna for coluna in df.columns if coluna not in ['Data','Loja']] Resultado Após utilizar o pandas.melt teremos o seguinte resultado. Sendo essa uma estrutura de dados muito mais fácil para realizar as analises via Programação (Python, R etc) ou até mesmo para realizar consultas via SQL. Considerações Finais Enfim essa é a uma das formas que utilizo para realizar o Unpivot nos dados, existem inúmeras outras formas, algumas mais simples, outras mais complexas, porém a que julgo mais simples e eficaz e esta que ensinei a vocês. Espero que esse conteúdo seja útil para vocês e qualquer dúvida deixe nos comentários que ficarei feliz em responder.
  6. Bom dia. Então o -1 é o índice para o Slicing (Esse número limita o que vamos visualizar na string) Ele segue o padrão de variavel[ inicio : fim : step], podendo ser número positivo ou negativo. Inicio vai definir de onde queremos que o texto inicie. Fim vai definir até onde querermos que o texo vá. Step vai definir que a quantidade será de N em N caracteres. Aqui uma imagem para facilitar isso. Sugiro ler arr[0:3] como "quero mostrar o texto que inicia da casa 0 e vai até a casa 3", ou seja, PRE Segue abaixo um artigo que explicar isso muito bem também. Python Strings Slicing esse slicing pode ser usado também em listas, sendo muito útil. Espero que isso tenha esclarecido um pouco mais sobre o porquê utilizei o - 1, pois não queria que o texto fosse até o fim e sim somente até o ] que está na posição (-1) no texto.
  7. Olá @Carlos dAvila tudo bem ? Existem algumas alternativas, porém como não sei exatamente como está o campo CNAE SECUNDÀRIO fica um pouco complicado, pois ele pode estar como String ou pode estar já com Lista... Portanto, recomendo sempre converter isso em lista para facilitar na navegação dos itens. Exemplo de como realizar isso: df['CNAE SECUNDARIO'] = df['CNAE SECUNDARIO'].str.split(',') Após isso torna-se mais fácil realizar as buscas segue abaixo o exemplo. Utilizando Apply + IN # Alterar o 6810201 para o CNAE que deseja buscar. # Vai retornar todas as linhas cujo CNAE Secundario possua o digitado df[df['CNAE SECUNDARIO'].apply(lambda lista: '6810201' in lista)] Enfim espero que seja isso que esteja procurando, caso contrário estou à disposição para ajudar.
  8. Olá @kleber jeneiro tudo bem ? Isso ocorre, pois na criação da função você definiu que espera 2 parâmetros (userName e password). Porém, no código em algum momento foi chamado a sua função passando apenas 1 parâmetro. Se analisar o erro TypeError: botao_logar() missing 1 required positional argument: 'password'. Ele comenta exatamente isso que ao chamar a função botao_logar() está faltando um parâmetros, o 'password'. Recomendo analisar o código e ver todas às vezes que a função é chamada para garantir que esteja sendo passado todos os parâmetros.
  9. Boa tarde @alessandro.cardoso. O problema está no formato que a API está retornando, pois ele acaba não sendo um formato válido para o JSON. Se olhar a estrutura vai perceber que o DATA ali deveria estar entre " " ou seja "data" para estar no formato correto 😕 Porém, conseguimos tratar isso mesmo assim em python e com isso criar o DataFrame. Segue abaixo como realizar isso. import requests import json import pandas as pd req = requests.get('http://ofertas.silcarpneus.com.br/json/lojas.php?key=silcarpneus2023@') # Ajustar a envode do Texto dados = req.content.decode('utf-8') # Fazer um Slicing no Texto para obter somente uma parte dele ou seja obter o que está dentro de [ ] # Exemplo: '{ data : [{"Loja":"F21 - Ribeirao Preto","agentsOnline":"1"}]}' vai retornar somente [{"Loja":"F21 - Ribeirao Preto","agentsOnline":"1"}] json_string = dados[dados.find('['):-1] # Transformar isso num formato válido para criar o DataFrame. # Exemplo: '[{"Loja":"F21 - Ribeirao Preto","agentsOnline":"1"},{"Loja":"F32 - Ribeirao Preto","agentsOnline":"2"}]' dados_formatados = json.loads(json_string) # Criar o DataFrame df = pd.DataFrame(dados_formatados) Normalmente não é necessário realizar isso, pois as APIs já retornam no formato correto de JSON, porém também é simples tratar os dados. Espero que seja isso que precise, caso contrario estou à disposição para ajudar. 👍
  10. Olá @alessandro.cardoso tudo bem ? Uma forma simples é transformar esses dados em um DataFrame do Pandas. Segue a lógica para fazer isso. Realiza o Request ai na API. Converte a resposta em JSON. Cria o DataFrame. Exemplo de código: import requests import pandas as pd import json # Realiza a Requisição e converte em JSON - Ai precisará adaptar headers e parametros da API caso tenha req = requests.get('URL DA API').json() # Cria o DataFrame df = pd.DataFrame(req['data']) Exemplo da estrutura final. Após ter o DataFrame você pode manipulá-lo como desejar, inserir em banco de dados, criar visualizações entre outras ações. Espero que isso lhe ajude, caso contrário estou à disposição para auxiliar.
  11. Olá @renangpaiva tudo bem? Atualmente existem inúmeras formas de criar dashboards em Python, cada biblioteca tem suas particularidades, algumas a visualização é direto no Jupyter outras criam a visualização através do navegador. Recomendo verificar o curso que está fazendo e a biblioteca que ele utiliza, pode ser que em alguns casos precise realizar configurações simples no código para, por exemplo, abrir o dashboard no navegador. Sendo assim sugiro olhar a biblioteca e pesquisar como a mesma funciona, caso mesmo assim não conseguir comenta aqui algumas partes do código e a biblioteca que está utilizando.
  12. Bom dia @ezanardo. Poderia mandar um print do arquivo excel ? (Pode ocultar os valores se quiser) Provavelmente o Pandas não está conseguindo entender uma parte da Planilha para conseguir criar o DataFrame. Uma alternativa é ler os arquivos por outra biblioteca e após ter a estrutura correta criar o DataFrame. Aqui neste artigo mostra algumas formas de ler Excel além do pandas Abrindo arquivos Excel em Python Espero que isso lhe ajude, caso contrário, com mais informações vou conseguir lhe auxiliar de forma mais assertiva.
  13. @sirsmart é possivel sim segue abaixo o código. import os import datetime import pandas as pd # Pasta dos arquivos caminho = '/home/ec2-user/etls/' # Obter todos os arquivos da pasta files = os.listdir(caminho) files.sort() # Teremos uma lista com todos os arquivos .txt dict_arquivos = { 'file': [], 'created_at': [] } for file in files: #Verificar se é TXT if '.txt' in file: # Obter a data de criação em timestamp e converter para Date timestamp = os.path.getmtime(f"{caminho}{file}") created_at = datetime.datetime.fromtimestamp(timestamp).date() # Alimentar o Dicionario dict_arquivos['file'].append(file) dict_arquivos['created_at'].append(created_at) # Criar o DataFrame com esses dados df_file = pd.DataFrame(dict_arquivos) # Ordernar os dados pela data de criação df_file = df_file.sort_values(by =['created_at']) Essa foi a forma que construí aqui o algoritmo, lembrando que há formas mais rápidas, mas essa foi a que consegui nesse tempo, espero que lhe ajude. Artigo consultado para obter a data de criação: Python Get File Creation and Modification DateTime Espero que seja isso que precise, caso contrario estou a disposição para ajudar.
  14. Quando é obtido todos os arquivos da pasta. Usamos o sort( ) para ordenar os arquivos se não me engano por ordem alfabética (A até Z, a até z) algo assim. Ai ao usar o FOR ele irá percorrer por cada registro na ordem dos índices do FOR ou seja na ordem que o SORT retornou (Alfabética) Essa parte aqui do código import os # Pasta dos arquivos caminho = '/home/ec2-user/etls/Testes_Wiki/' # Obter todos os arquivos da pasta files = os.listdir(caminho) files.sort() # Teremos uma lista com todos os arquivos .txt arquivos_txt = [file for file in files if '.txt' in file] print(arquivos_txt) Se você olhar o print dessa lista (arquivos_txt) é nesta ordem que iremos ler os arquivos.
  15. Olá @sirsmart tudo bem ? Existe uma maneira simples de realizar isso dependendo do conteúdo dos arquivos. Mas basicamente você precisará realizar duas etapas Navegar pelos Arquivos Armazenar os dados dos arquivos Segue abaixo um exemplo de código import os # Pasta dos arquivos caminho = '/home/ec2-user/etls/Testes_Wiki/' # Obter todos os arquivos da pasta files = os.listdir(caminho) files.sort() # Teremos uma lista com todos os arquivos .txt arquivos_txt = [file for file in files if '.txt' in file] # Uma string para armazenar todos os outros arquivos all_data = '' for txt in arquivos_txt: # Ler o arquivo data = open(caminho + txt, "r") # Armazenar os dados all_data += f"Arquivo: {txt} \nDados: {data.read()}. \n\n" print(all_data) Espero que seja isso que precise, caso contrario estou a disposição para ajudar.
×
×
  • Create New...