Найти кнопку лайка в Lunkedin на Selenium
хочу полайкать посты красивых девченок в Linkedin при помощи python3 и Selenium, но не могу определиться с нормальным ключем для кнопки лайка. например пост: https://www.linkedin.com/posts/imarpit_technology-marketing-innovation-ugcPost-6921379896199913472-rAbK CSS селектор для кнопки лайка:
#ember67 > span > div > span
ну и код:
button1 = driver1.find_element_by_css_selector("#ember67 > span > div > span")
button1.click()
И все бы ничего, но число в #ember для каждого поста меняется. Как найти нормальный универсальный селектор (не обязательно по CSS, любой) для кнопки лайка? и в чем суть #ember, просто для понимания?
Ответы (1 шт):
Автор решения: Zhenia Kviatkivskyi
→ Ссылка
Попробуйте использовать js для получения веб элементов. Кнопку лайк можно получить по классу social-action-bar__button-text
import time
from selenium.webdriver.common.by import By
from selenium import webdriver
# путь к хром драйверу в проекте
driver = webdriver.Chrome(executable_path="C:\\Users\\evgen\\PycharmProjects\\ParsersProject\\chrome\\chromedriver_win32\\chromedriver.exe")
driver.maximize_window()
driver.get("https://www.linkedin.com/uas/login?session_redirect=/sales&fromSignIn=true&trk=navigator")
time.sleep(10)
driver.find_element(By.XPATH, '//*[@id="username"]').send_keys("email") # ваш логин
time.sleep(10)
driver.find_element(By.XPATH, '//*[@id="password"]').send_keys("password") # пароль
time.sleep(10)
button = driver.execute_script("""
let button = document.querySelector('.btn__primary--large');
console.log('button: ',button);
return button;
""")
button.click()
time.sleep(1)
# ваша ссылка
driver.get("https://www.linkedin.com/posts/imarpit_technology-marketing-innovation-ugcPost-6921379896199913472-rAbK")
time.sleep(5)
# поиграйтесь с цифрами, чтобы проскролило до кнопки лайк
driver.execute_script("""
('window.scrollBy(0,250)', '');
""")
like_button = driver.execute_script("""
let like_button = document.querySelector('.social-action-bar__button-text');
console.log('like_button: ', like_button);
return like_button;
""")
like_button.click()