HOME/Articles/

pil example buscador americanas (snippet)

Article Outline

Python pil example 'buscador americanas'

Modules used in program:

  • import webbrowser
  • import requests

python buscador americanas

Python pil example: buscador americanas

import requests
from bs4 import BeautifulSoup
from tkinter import Tk
from tkinter import Label
from tkinter import Button
from PIL import Image, ImageTk
import webbrowser

produto = input("Informe o Produto:\n")

#1
url = 'https://www.americanas.com.br'
url_base = 'https://www.americanas.com.br/busca/{}'
#2
reposta = requests.get(url_base.format(produto))
#3
try:
    reposta.raise_for_status()
except Exception as exececao:
    print("Houve um problema:\n{}\nVerifique a URL {}".format(exececao, url_base))
#4
soup = BeautifulSoup(reposta.text, 'html.parser')

marcacoes_nome = 'h1'
atributo_nome = {'class_': 'card-product-name'}
marcacoes_preco = 'div'
atributo_preco = {'class_': 'card-product-price'}
marcacoes_link = 'a'
atributo_link = {'class_': 'card-product-url'}
marcacoes_foto = 'img'
atributo_foto = {'class_': 'card-product-picture'}

resultados_nome = soup.find_all(marcacoes_nome, **atributo_nome)
resultados_preco = soup.find_all(marcacoes_preco, **atributo_preco)
resultados_link = soup.find_all(marcacoes_link, **atributo_link)
resultados_foto = soup.find_all(marcacoes_foto, **atributo_foto)

nomes = []
precos = []
links = []
fotos = []
menor = -1
count = 0
indice_menor = 0

for n, p, l, f in zip(resultados_nome, resultados_preco, resultados_link, resultados_foto):
    produto_nome = n.get_text('h1')
    nomes.append(produto_nome)

    produto_preco = float(p.get_text('').replace('R$', '').replace('.', '').replace(',', '.').strip())
    precos.append(produto_preco)

    produto_link = l.get('href')
    link_completo = url + produto_link
    links.append(link_completo)

    produto_foto = f.get('src')
    fotos.append(produto_foto)

    if produto_preco < menor or menor == -1:
        menor = produto_preco
        indice_menor = count
    count += 1

final = []
final.append(nomes[indice_menor])
final.append(precos[indice_menor])
final.append(links[indice_menor])
final.append(fotos[indice_menor])
print(final)

janela_principal = Tk()
janela_principal.geometry('600x500')
janela_principal.title("Buscador de Preços 'americanas.com.br'")

label_produto = Label(janela_principal, text=final[0])
label_preco = Label(janela_principal, text=final[1])
label_produto.pack(side='top')
label_preco.pack(side='bottom')

with open('americanas.jpg', 'wb') as f:
    f.write(requests.get(final[3]).content)

imagem_pil = Image.open('americanas.jpg')
imagem_tk = ImageTk.PhotoImage(imagem_pil)

label_foto = Label(janela_principal, image=imagem_tk)
label_foto.pack(padx=130, pady=130)

botao_link = Button(janela_principal)
botao_link['text'] = 'Ir ao Site'
botao_link['command'] = lambda: webbrowser.open(final[2])
botao_link.pack()

janela_principal.mainloop()