Pular para o conteúdo
Ramos da Informática - Comunidade de Desenvolvedores

Torne-se um desenvolvedor FullStack: Pacote completo de formação desenvolvedor Frontend e Backend utilizando as linguagens de programação e frameworks mais procurados no mercado de trabalho. Mais informações, aqui. Faça o download do E-BookGuia Completo Para Se Tornar um(a) Desenvolvedor(a) Full-Stack, Começando do ZERO”.

Engenheiro de Software, autor de livros sobe tecnologia e negócios. É mantenedor do site Ramos da Informática. Hobbies: investir em ações, natação e finanças.

Engenheiro de Software, autor de livros sobe tecnologia e negócios. É mantenedor do site Ramos da Informática. Hobbies: investir em ações, natação e finanças.

admin

Todos os artigos deste autor

Gráfico de contribuições do Github com Python e Selenium

Chatbots com Whatsapp e Cielo integrados Nesse curso, eu vou te mostrar como o consumidor poder realizar um pagamento por dentro do aplicativo do WhatsApp, aonde o seu cliente vai entrar numa conversa como entraria numa conversa com qualquer pessoa ou com a sua empresa, navegar entre os produtos/serviços em menus simples enviados pelo chatbot, adicionar esses produtos/serviços no carrinho de compras, e num determinado ponto do chat, um link exclusivo é enviado para o cliente preencher os dados do cartão de crédito. No final, a análise é devolvida para o Whatsapp no qual a conversa foi iniciada. Inscreva-se.

Como alguns sabem, sou apaixonado por Python. Atualmente, minha linguagem favorita por conta de sua simplicade e poder (além de ficar LINDJA toda indentada, hahahaha).

Uma das coisas mais legais da linguagem é a enorme quantidade de bibliotecas disponíveis. Cada dia que abro um grupo de discussão acabo conhecendo alguma funcionalidade interessante. Se você faz parte de algum desses grupos, provavelmente já viu o post do Alex Recker “Using Selenium to Buy a Bus Pass”, em que ele mostra como automatizou a compra de passagens de ônibus com Selenium e Python.

Eu já havia ouvido falar do Selenium, mas nunca tinha experimentado na prática e o post do Alex foi o empurrão que faltava.

Obviamente, meu projetinho é bem mais simples, mas foi algo divertido de se fazer como forma de aprendizado. Batizei-o de GHSS(Github Screenshot). Como o próprio nome sugere, ele entra no seu perfil do Github e tira um screenshot do gráfico de contribuições, salvando com a data atual.

Abaixo, irei mostrar como fazer. Visto que há muita gente que usa Python sem ser programador por profissão, tentarei explicar de forma mais simples possível. O código completo pode ser encontrado no meu Github.

Neste código, utilizaremos o Python2.

Primeiramente, temos que importar todas as bibliotecas necessárias.

Na linha 1, importamos o “OS”, que será utilizado para “acharmos” o arquivo secrets.yml. Explicarei daqui a pouco.

Na linha 2, importamos do Selenium o Webdriver, responsável pela automatização (abertura das páginas e preenchimento dos campos).

Nas próximas duas linhas, importamos as bibliotecas restantes que são responsáveis pelo nosso arquivo secrets.yml, no qual o username e password serão guardados, e pela data que será salva no nome do arquivo final.

Na última linha, importamos o responsável por tirar o screenshot.

import os
from selenium import webdriver
import yaml
from datetime import date
import pyscreenshot as ImageGrab

Neste bloco de código, mostramos ao nosso programa onde está nosso arquivo secrets.yml e o carregamos.

cur_dir = os.path.dirname(os.path.realpath(__file__))
secret_path = os.path.join(cur_dir, ‘secrets.yml’)with open(secret_path, ‘r’) as stream:
data = yaml.load(stream)
USERNAME = data.get(‘user’,)
PASSWORD = data.get(‘password’)

O arquivo secrets.yml é composto por apenas dois campos, “password” e “user”, que, PASMEM, são para inserir sua senha e seu usuário.

password: senha_do_zezinho_hacker
user: zezinhohacker123

Nestas três linhas abrimos o Firefox, passamos para ele qual o endereço desejamos acessar e maximizamos a janela, respectivamente.

driver = webdriver.Firefox()
driver.get(“https://github.com/login”)
driver.maximize_window()

Aqui é onde a “mágica” acontece.

Na primeira linha, a propriedade “find_element_by_id” busca o campo “login_field”, onde devemos inserir o nome de usuário.
Na linha posterior, enviamos aquele username informado lá no secrets, lembra?

Nas próximas duas linhas, é feito o mesmo procedimento, mas, desta vez, com a senha.

Na última, clicamos o botão para logarmos.

email = driver.find_element_by_id(“login_field”)
email.send_keys(USERNAME)
senha = driver.find_element_by_id(“password”)
senha.send_keys(PASSWORD)
driver.find_element_by_name(‘commit’).click()

Nesta linha, nós entramos no nosso perfil do Github.

Quando utilizamos {0}, “guardamos” o espaço, para o que informarmos adiante. Ou seja, no espaço reservado, será inserido o username.

driver.get(“https://github.com/{0} .format(USERNAME))

Por exemplo, se fizermos o seguinte código:

print(“Meus esportes preferidos são: {0}, {1} e {2} .format(“futebol”, “basquete”, “corrida”))

O resultado será:

Meus esportes preferidos são: futebol, basquete e corrida.

Deu para entender?

Na última linha do programa, salvamos a imagem.

No campo bbox, informamos qual área da tela queremos dar o screenshot, na ordem: X1, Y1, X2, Y2. Você pode alterá-lo de acordo com seu navegador.

No save, utilizamos o que ensinei acima para gerar o arquivo da seguinte maneira: “dataatual_gitshot_nomedousuario”.

img = ImageGrab.grab(bbox=(460,540,770,208)).save({0}_gitshot_{1}.png” .format(date.today(), USERNAME))

Este será o resultado. O nome do arquivo, no meu caso, ficou “2016-01-24_gitshot_othonalberto.png”.

Código completo:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import osfrom selenium import webdriver
import yaml
from datetime import date
import pyscreenshot as ImageGrab

cur_dir = os.path.dirname(os.path.realpath(__file__))
secret_path = os.path.join(cur_dir, ‘secrets.yml’)

with open(secret_path, ‘r’) as stream:
data = yaml.load(stream)
USERNAME = data.get(‘user’,)
PASSWORD = data.get(‘password’)

driver = webdriver.Firefox()
driver.get(“https://github.com/login”)
driver.maximize_window()

email = driver.find_element_by_id(“login_field”)
email.send_keys(USERNAME)
senha = driver.find_element_by_id(“password”)
senha.send_keys(PASSWORD)
driver.find_element_by_name(‘commit’).click()

driver.get(“https://github.com/{0} .format(USERNAME))

img = ImageGrab.grab(bbox=(460,540,770,208)).save({0}_gitshot_{1}.png” .format(date.today(), USERNAME))
# bbox=(X1, Y1, X2, Y2)

É isso! Espero ter contribuído com o conhecimento de vocês com este post e gerado curiosidade para que experimentem o Selenium.

Quem quiser contribuir, seja com código ou sugestões, sinta-se à vontade.

Abraços!

Este artigo foi importado automaticamente por fazer parte do Planetário Dev. Quer fazer parte deste HUB de conteúdos? Faça parte do Planetário e veja as vantagens.

Não tem site ou blog? Seja um autor do site e ainda pode ser remunerado.

Leia também:

Facebook
LinkedIn
Twitter
Pinterest
Reddit
Telegram
WhatsApp
Email
Print

Relacionados

Deixe uma resposta