import requests
from bs4 import BeautifulSoup
import csv

minha_busca_ML = 'placa-de-video-3060'
base_url = f'https://lista.mercadolivre.com.br/{minha_busca_ML}/'
print('Fazendo a Busca na URL: ' + base_url)
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
page = requests.get(base_url, headers=headers)

soup = BeautifulSoup(page.text, 'html.parser')

# Localiza os elementos de cada produto na listagem
quote_elements = soup.find_all('li', class_='ui-search-layout__item')
tags = []

for quote_element in quote_elements:
    # Extrai a descrição do produto
    descricao_produto = quote_element.find('h2', class_='ui-search-item__title').text if quote_element.find('h2', class_='ui-search-item__title') else 'Descrição não encontrada'
    
    # Extrai o link do produto
    link_tag = quote_element.find('a', href=True)
    link1 = link_tag['href'] if link_tag else 'Link não encontrado'
    
    # Extrai o preço do produto
    preco_produto = quote_element.find('span', class_='andes-money-amount__fraction').text if quote_element.find('span', class_='andes-money-amount__fraction') else 'Preço não encontrado'
    
    # Extrai a imagem do produto
    images = quote_element.find_all('img')
    foto_produto = images[0]['src'] if images else 'Imagem não encontrada'
    
    print(f'Produto: {descricao_produto}, Preço: {preco_produto}, Foto: {foto_produto}, Link: {link1} \n\n')
    
    # Armazena as informações em uma lista de dicionários
    tags.append(
        {
            'produto': descricao_produto,
            'preco': preco_produto,
            'foto': foto_produto,
            'link': link1
        }
    )

# Gerando o arquivo CSV
csv_file = open('resultado.csv', 'w', encoding='utf-8', newline='')

# Inicializa o objeto writer para inserir dados no CSV
writer = csv.writer(csv_file)

# Escreve o cabeçalho do arquivo CSV
writer.writerow(['produto', 'preco', 'foto', 'link'])

# Escreve cada linha do CSV
for quote in tags:
    writer.writerow(quote.values())

# Fecha o arquivo CSV
csv_file.close()
