[Python] Programa para sorteio no instagram com Python

Discussão em 'Python' iniciado por Stack, Março 24, 2025.

  1. Stack

    Stack Membro Participativo


    Todas as vezes que rodo o programa ele entra na conta, entra no post, mas não está realmente vendo e pegando os comentários do post para acabar fazendo o sorteio no programa.
    ​

    import random
    import time
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.chrome.service import Service
    from webdriver_manager.chrome import ChromeDriverManager
    # Iniciar WebDriver
    def iniciar_driver():
    options = webdriver.ChromeOptions()
    # options.add_argument("--headless") # Executa sem abrir o navegador (remova para depurar)
    options.add_argument("--disable-gpu")
    options.add_argument("--no-sandbox")
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
    return driver
    # Login no Instagram
    def login_instagram(driver, usuario, senha):
    driver.get("https://www.instagram.com/accounts/login/")
    time.sleep(5)
    driver.find_element(By.NAME, "username").send_keys(usuario)
    driver.find_element(By.NAME, "password").send_keys(senha + Keys.RETURN)
    time.sleep(5)
    # Rolar a página para carregar mais comentários
    def carregar_comentarios(driver, max_scrolls=10):
    for _ in range(max_scrolls):
    try:
    botao_mais = driver.find_element(By.XPATH, "//button[contains(text(), 'Ver mais comentários')]")
    botao_mais.click()
    time.sleep(2)
    except:
    break
    # Coletar comentários com nome de usuário
    def pegar_comentarios(driver):
    carregar_comentarios(driver)
    comentarios = []
    elementos = driver.find_elements(By.XPATH, "//ul[contains(@class, 'x5yr21d')]/div/li")
    for elemento in elementos:
    try:
    usuario = elemento.find_element(By.TAG_NAME, "a").text # Nome do usuário
    comentario_texto = elemento.find_element(By.TAG_NAME, "span").text.strip() # Texto do comentário
    if comentario_texto.startswith("@"): # Filtrar apenas menções
    comentarios.append((usuario, comentario_texto))
    except:
    continue
    return comentarios
    # Sortear vencedor
    def sortear_vencedor(comentarios):
    if comentarios:
    vencedor = random.choice(comentarios)
    return vencedor # Retorna (usuário, comentário)
    return None
    # Executar sorteio
    def executar_sorteio(usuario, senha, url_post):
    driver = iniciar_driver()
    login_instagram(driver, usuario, senha)
    driver.get(url_post)
    time.sleep(5)
    comentarios = pegar_comentarios(driver)
    vencedor = sortear_vencedor(comentarios)
    driver.quit()
    if vencedor:
    usuario_vencedor, comentario_vencedor = vencedor
    print(f" O vencedor foi @{usuario_vencedor} com o comentário: {comentario_vencedor} ")
    else:
    print("Nenhum comentário válido encontrado.")
    # Dados de login (use um perfil secundário para evitar bloqueios)
    usuario_instagram = "usuario"
    senha_instagram = "XXXXXXXXX"
    url_postagem = "https://www.instagram.com/p/teste"
    executar_sorteio(usuario_instagram, senha_instagram, url_postagem)

    Continue reading...

Compartilhe esta Página