Всем привет
Продолжаем парсить сайты с помощью Selenium и Python и автоматизировать процесс переноса музыкальной библиотеки из одного муз. сервиса в другой.
Если вы здесь впервые, то обязательно ознакомьтесь с предыдущими статьями, чтобы все понимать и чувствовать себя комфортно.
Также я подумал, что было бы неплохо поделиться с вами хорошим небольшим курсом видео на YouTube по Selenium, по которому я и учился всему этому безобразию.
К делу
В последний раз мы остановились на том, что научились открывать браузер и вошли в свой аккаунт в Яндекс.Музыке.
Теперь неплохо было бы научиться находить треки в библиотеке сервиса и добавлять их к себе.
Как лайкнуть песенку?
Поиск треков
Перейдем на главную страницу.
В верхней части видим поле для поиска. Введем туда название какой-нибудь песенки и нажмем Enter, конечно же.
Замечаем, что текст, введенный в поиск, подставляется в URL страницы, на которой отображаются результаты. Иными словами, когда мы нажимаем поиск, то Яндекс.Музыка выдает нам ответ по запросу search с аргументом text ("%20" скорее всего означает пробел).
Как мы можем это реализовать в программе?
Открытие веб-страниц
Чтобы открыть сайт, необходимо обратиться к экземпляру веб-драйвера и вызвать метод get:
driver.get(YOUR_URL)
После выполнения этой строчки в вашем браузере откроется сайт, URL которого вы указали.
Покопаемся в коде страницы
Итак, пришло время залезть в HTML и найти элемент, на который нам нужно кликнуть, чтобы добавить композицию в свою библиотеку.
Для этого в Chrome, как и в остальных браузерах, есть специальный инструмент, вызвать который можно, нажав на ПКМ и выбрав пункт "Просмотреть код".
Перед нами открывается страшная картина:
Но не волнуйтесь, мы не будем все это читать, а просто воспользуемся штучкой, которая нам сама покажет нужный кусок кода. Жмакаем на выделенную на скрине кнопочку. Выделяем сердечко и кликаем, в правой панели покажется код разметки, соответствующий выбранному визуальному элементу.
Поиск элементов на странице Selenium
Чтобы получить экземпляр какого-то элемента с веб-станицы, нужно воспользоваться специальным методом драйвера:
element = driver.find_element_by_xpath(XPATH)
Что такое XPath? Ну, это такая строчка, представляющая собой запрос к коду разметки. С его помощью мы сможем без проблем находить элементы на страничке.
Чтобы получить XPath нужно кликнуть по нужной области ЛКМ. И нажать вот на эти кнопочки, короче:
Теперь у нас есть XPath сердечка, на которое нужно нажать.
Как кликнуть?
Чтобы кликнуть на полученный элемент, надо вызвать у него метод click:
element.click()
Однако, это работает только с кнопками - кликабельными элементами. Если нам нужно нажать не на кнопку (а это сердечко, как оказалось, не кнопка), то придется немножко ухищряться. Для этих целей я использую ActionChains. Не буду вдаваться в подробности, что это такое, просто скажу, что это позволяет последовательно выполнять низкоуровневые действия вроде движения курсора, если я все правильно понял... :)
Итак, чтобы кликать на любой элемент создам специальную функцию:
Что она делает? Она ставит курсор на переданный элемент и кликает.
Лайкнем же песенку наконец!
Так, я создал файлик, куда буду кидать все функции, связанные с Яндекс.Музыкой. Теперь реализую там функцию, которая будет лайкать песенку, следующим образом:
Теперь залезем в main:
Можно запускать main и смотреть, что получится!
!!! Если возникли какие-то ошибки с импортом, то добавьте __init__.py в папку webbrowser, это сделает ее пакетом !!!
Исходный код обновляется:
https://github.com/Victorman5/MisicLiker
<-- Предыдущая часть | | | Следующая часть -->