Jump to content

Thanael

Pessoal da TecnoSpeed
  • Contagem de Conteúdo

    217
  • Ingressou

  • Última visita

  • Dias Ganhos

    28

Postagens postado por Thanael

  1. Olá @Gustavo Reiss só por curiosidade qual linguagem de programação está usando para o WebScraping? (Fiquei curioso quanto a sintaxe //div e etc) - Utilizo Python e não conhecia essa forma
     

    Uma curiosidade, percebi que está utilizando Web Scraping para obter os dados de CNPJs já pensou em obter eles via API. (Nos trabalhos que precisei realizar isso usei APIs como cnpj.ws CNPJá) ?

    • Curtir 1
  2. Já conhece o termo Web Scraping ?

    Fiz um artigo explicando os conceitos básicos de Web Scraping, principais bibliotecas, abordagens, benefícios e além de tudo isso realizamos na prática um exemplo de extração de dados de Páginas Web.


    Se ficou curioso para saber mais, corre lá no Blog da Casa do Desenvolvedor que acabou de sair meu artigo sobre "WebScraping: O que é e como realizar?"

     

    https://blog.casadodesenvolvedor.com.br/webscraping/

    • Curtir 2
  3. @Jsscrypt Assim como o @Ryan Zimerman Leite comentou sem vermos o código é muito complicado lhe auxiliar.

    Mas olhando pela mensagem de erro de "KeyError: Vendas" isso geralmente ocorre quando está tentando chamar o Vendas antes do mesmo existir.  

    Possivelmente o erro está na parte que você faz o ['vendas'].values.... (Teoricamente isso não funciona mesmo, precisa informar o dataframe exemplo dataframe['vendas'].values....) 

    Infelizmente sem visualizar o código fica complicado de lhe auxiliar.

    Caso esteja com dificuldades sugiro colar o código aqui usando essa opção de adicionar código.image.png

     

    Enfim espero que consiga postar aqui o código para podermos lhe auxiliar de forma mais assertiva.

    • Curtir 1
  4. Olá @fenbasso.

    Não entendo muito bem como ocorre essa chamada do arquivo .kv. 

    Pesquisando brevemente sobre o tema encontrei algo que possa lhe ajudar...

    from kivy.lang import Builder
    Builder.load_file('kivi.kv')

    Aí basta passar o caminho de seus arquivos.
    Exemplo: tela2.kv, tela3.kv e etc.

    Recomendo olhar a própria documentação da biblioteca sobre isso em:

    Kivy - Builder tem uma parte específica que explica sobre isso

    image.png

     

    Enfim, recomendo ir testando e procurando para verificar como resolver isso, por não conhecer a biblioteca infelizmente não consigo ajudar de forma mais precisa.

    • Curtir 1
    • Ajudou! 1
  5. Olá @fenbasso.

    Infelizmente não conheço muito sobre essa questão de interfaces com Python.

    Porém, se a dúvida é sobre Modularização, e possível, sim, modular seu código.

    Recomendo dar uma olhada nesses artigos para ter uma ideia de como realizar essa modularização e com isso adaptar seu código para possibilitar a criação dos módulos e etc.

    Neles tem alguns exemplos práticos que pode lhe auxiliar.

    Exemplo: (Imagem do 1° Artigo)
    image.png

     

    Espero que isso lhe dê uma base para conseguir modularizar seu código. 

    • Curtir 1
  6. Olá @Higor Da Silva tudo bem ?

    Fiquei meio confuso aqui haha, para facilitar com que eu consiga lhe ajudar preciso entender algumas coisas.

    • Qual a estrutura do DataFrame ?
      (Se puder mandar um print, pode ocultar os dados, só preciso entender a estrutura de colunas do DataFrame)
       
    • O que você precisa no caso é simplesmente substituir os valores nulos de uma coluna pelo retorno da função VerificarTurno?
      Se for isso uma abordagem é utilizar o df.apply( ) segue abaixo um exemplo de código.
    # Basicamente vai percorrer cada linha da coluna responsável.
    # Se o responsavel for NULO ele vai colocar o retorno da função verificarTurno
    # Se o responsável NÃO FOR NULO ele vai colocar o valor já existente de responsável.
    df['responsavel'] = df.apply(lambda item: verificarTurno(parametro) if item['responsavel'] else item['responsavel'], axis = 1)

    Enfim, essa é uma maneira mas tudo depende de como o DataFrame esta estruturado e do que exatamente precisa.

    Espero que isso lhe ajude, enquanto isso aguardo sua resposta para conseguir auxiliar de forma mais assertiva.

    • Amei 1
  7. Olá @anny karolliny raquebaque tudo bem ?

    Olhando seu código só faltou ajustar o While number > 0 para >= 0...

    Pois de acordo com seu código a lógica é:

    • ENQUANTO número_digitado for maior que 0
      • printar o Número
      • Diminuir

    Perceba que quando chegar no número 1 ele não irá para próxima iteração. Pois, o próximo número vai ser 0 e como 0 não é maior que 0 ele não irá printar.

    Segue abaixo o ajuste

    # take the number as input
    number = int(input())
    
    # use a while loop for the countdown
    while number >= 0:
        print(number)
        number -= 1
    
    print("Fim da contagem regressiva!")

    Dessa forma vai funcionar tranquilamente, essas coisas tendem a passar despercebidas mesmo haha 😅

    • Ajudou! 1
  8. Olá @ctrlah tudo bem?

    Segue abaixo algumas abordagens que pode lhe auxiliar.

    • Utilizar alguma API de IA (Inteligencia Artificial) como por exemplo ChatGPT
      É relativamente simples, porém provavelmente não terá informações atualizadas ou tão confiáveis...
       
    • Utilizar abordagens de Web Scraping
      Pode utilizar uma abordagem de Web Scraping para obter os dados da pesquisa do google refrente ao que deseja. Ou criar extrações de dados de sites de noticias referentes ao que deseja.
      Particularmente acredito que essa abordagem seja mais viável adaptável as suas necessidades

    Segue abaixo algumas ideias de utilização de Web Scraping

    • Obter as manchetes mais recentes sobre o que deseja. 
    • Criar extrações de dados de determinados sites de notícias sobre o tema desejado. 

    OBS: Tenho uma postagem introdutória sobre este tema aqui em Você já ouviu falar em WebScraping?

    Espero que isso lhe ajude a entender melhor o que precisa e quais os caminhos para executar isso. De qualquer forma estou disposto para auxiliar se tiver mais dúvidas.

    • Ajudou! 1
  9. Uma dica é você tentar conectar nele através de um SGBD padrão (Dbeaver, MySQL) ou qualquer outro só para ir testando a conexão por ser mais visível e fácil.

    Encontrei algo relacionado a seu problema em Conexão com banco de dados MYSQL hospedado no KingHost aparentemente a porta é 3306, tenta adicionar ela e testar aí. 

    Acabei de testar via Dbeaver e realmente é a PORT 3306, recebendo somente o erro aqui por conta das credenciais. Então realiza a conexão novamente ali adicionando esse por 3306 conforme string de conexão passei nos comentários anteriores.

     

    image.png

    • Ajudou! 1
  10. Olá @alessandro.cardoso

    O erro apresentado no seu código diz que "_mysql_connector.MySQLInterfaceError: Nenhum banco de dados foi selecionado", ou seja, faltou você informar o nome do banco de dados.

    Segue abaixo um exemplo de código que também realiza a conexão.

    from sqlalchemy import create_engine
    
    conexao = create_engine('mysql+pymysql://{user}:{password}@{host}:{port}/{db}'.format(
            user='usuario',
            password='senha',
            host='host',
            port='porta',
            db='database',
        ))
    

    Uma forma prática de realizar selects e já ter uma estrutura fácil de manipular é:

    import pandas as pd
    # Conexão seria a conexão com o banco definido no bloco de código acima
    df = pd.read_sql(''' select * from tabela ''', conexao)

    Espero que isso tenha lhe ajudado, caso contrário estou à disposição para ajudar no que for preciso.

    • Ajudou! 1
  11. 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. 

    • Curtir 1
  12. 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)
    image.png

    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. 👍

    • Curtir 1
  13. 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. 

    • Curtir 2
  14. Olá @pedrohenrique tudo bem?

    Uma maneira simples de corrigir isso é usando a tratativa de erros com o Try/ExceptAí 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.

    • Amei 1
  15. 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.

    image.png

    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). 

    image.png

    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.

    image.png

    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. 

    • Curtir 1
    • Amei 1
  16. 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.image.png

    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.

     

    • Amei 1
  17. 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(',')

    image.png

    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)]

    image.png

    Enfim espero que seja isso que esteja procurando, caso contrário estou à disposição para ajudar. 

    • Amei 2
  18. 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. 

    • Amei 1
  19. 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 😕 

    image.png

    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. 👍

    • Amei 1
  20. Olá @alessandro.cardoso tudo bem ?

    Uma forma simples é transformar esses dados em um DataFrame do Pandas.

    Segue a lógica para fazer isso.

    1. Realiza o Request ai na API.
    2. Converte a resposta em JSON.
    3. 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.

    image.png

    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.

     

    • Amei 1
  21. 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. 

    • Curtir 1
  22. 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

    Espero que isso lhe ajude, caso contrário, com mais informações vou conseguir lhe auxiliar de forma mais assertiva. 

    • Curtir 1
×
×
  • Create New...