Python Selenium: автоматизация Pinterest — организация пинов без папокPython

Программы на Python
Ответить
Anonymous
 Python Selenium: автоматизация Pinterest — организация пинов без папок

Сообщение Anonymous »

Я пытался использовать этот скрипт, чтобы получить булавки, которых нет в папке в моем профиле Pinterest, и поместить их в папку, потому что их ТАК МНОГО. Но он не находит кнопки и вызывает другие проблемы.

Код написан ИИ, потому что я просто хочу решить эту проблему.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 🔹 Configuração do WebDriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--start-maximized") # Maximizar a janela do navegador
driver = webdriver.Chrome(options=chrome_options)

# 🔹 Seu login do Pinterest (defina as variáveis diretamente aqui)
EMAIL = "email" # Substitua pelo seu e-mail
SENHA = "senha" # Substitua pela sua senha
USUARIO = "user" # Substitua pelo seu nome de usuário no Pinterest
PASTA_DESTINO = "pastaa" # Nome da pasta de destino para onde os pins serão movidos

def login_pinterest():
"""Faz login no Pinterest"""
driver.get("https://www.pinterest.com/login/")
time.sleep(3) # Espera o tempo necessário para carregar a página

# Preenche os campos de login
email_input = driver.find_element(By.NAME, "id")
senha_input = driver.find_element(By.NAME, "password")

email_input.send_keys(EMAIL)
senha_input.send_keys(SENHA)
senha_input.send_keys(Keys.RETURN)

time.sleep(5) # Aguarde o login ser processado

def organizar_pins():
"""Organiza os pins que estão sem pasta para a pasta 'Organizar'"""
driver.get(f"https://www.pinterest.com/{USUARIO}/") # Acessa a página de pins salvos
time.sleep(5) # Aguarda o carregamento dos pins

print("🔹 Aguardando você clicar no botão 'Organizar'...")

# Espera até que você tenha clicado no botão 'Organizar' manualmente
while True:
try:
# Verifica se a tela de organização foi aberta
organizar_btn = driver.find_element(By.XPATH, "//button[contains(text(), 'Avançar')]")
print("🔹 Tela de organização detectada! Continuando o processo...")
break # Se o botão 'Avançar' aparecer, o processo continua
except Exception as e:
# Continua esperando até que o botão de 'Avançar' apareça
time.sleep(1)

# Aguardar os pins sem pasta carregarem
time.sleep(3) # Aguarda mais um tempo caso necessário para carregar os pins

# Encontrar todos os pins na página
pins = driver.find_elements(By.XPATH, "//div[@data-test-id='pin']")
print(f"🔹 Encontrados {len(pins)} pins para organizar!")

for pin in pins:
try:
# Verifica se o pin está sem pasta
if not pin.find_elements(By.XPATH, ".//div[contains(@aria-label, 'Em uma pasta')]"):
pin.click() # Clica no pin
print("Pin clicado!")
time.sleep(2) # Espera entre cliques
else:
print("Pin já está em uma pasta. Pulando...")

except Exception as e:
print(f"Erro ao clicar em um pin: {e}")
continue

# Depois de todos os pins clicados, tenta clicar em "Avançar"
try:
# Aguardar até o botão "Avançar" estar disponível
avançar_btn = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Avançar')]"))
)
avançar_btn.click()
print("🔹 Clicado no botão 'Avançar'!")
except Exception as e:
print(f"Erro ao clicar no botão 'Avançar': {e}")

time.sleep(2) # Espera o carregamento da tela de seleção de pasta

# Seleciona a pasta "Organizar"
try:
destino_pasta = driver.find_element(By.XPATH, f"//div[contains(text(), '{PASTA_DESTINO}')]")
destino_pasta.click()
print(f"Pasta '{PASTA_DESTINO}' selecionada!")
except Exception as e:
print(f"Erro ao selecionar a pasta: {e}")

# Clica no botão 'Salvar'
try:
salvar_btn = driver.find_element(By.XPATH, "//button[contains(text(), 'Salvar')]")
salvar_btn.click()
print("Pins movidos para a pasta 'Organizar'!")
except Exception as e:
print(f"Erro ao clicar no botão 'Salvar': {e}")

# Executa o processo
login_pinterest()
organizar_pins()

# Fecha o navegador
driver.quit()


Подробнее здесь: https://stackoverflow.com/questions/795 ... ut-folders
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»