Привет всем! Сегодня мы узнаем, как делать поиск ссылки по названию и осуществлять переход по ней с помощью Selenium.
Собственно — рассказывать, что это за зверь такой — Selenium — я не буду. Знаете — хорошо. Не знаете — напомню только, что это инструмент для автоматизации действий браузера.
Установка Selenium очень хорошо описана вот тут. Скажу только, что при всей моей нелюбви к документации вся установка свелась к закачке необходимого мне драйвера (скачал под Chrome и Firefox), и прописыванию путей к драйверам в переменных среды:
Конечно, можно использовать данную штуку как инструмент для тестирования, но… что мешает использовать его и для скраппинга? 😉 Впрочем — все всегда зависит от настроения и задачи. Мы же начнем с тестирования и кнопки.
В качестве тестирования будем использовать блог Темы Лебедева (почему и нет?). И в качестве простой, но практичной задачи разберемся, как находить ссылку «Вернуться назад на 10 записей» и переходить по ней.
Итак, у нас имеется блог по ссылке: https://tema.livejournal.com
Загрузив ссылку в браузере давайте посмотрим на исходный код страницы. Особое внимание обратим на название ссылки, которая перебрасывает нас на 10 записей назад:
Собственно — название ссылки есть: << Previous 10 entries
Начинаем кодить. Для начала — подключим вебдрайвер, и возможность использования эмуляции нажатия клавиш:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
Учитывая, что мы будем работать с браузерам, и осуществлять переход по ссылкам — я подключил модуль библиотеку Time, которую мы будем использовать для контроля перехода по ссылкам:
import time
Теперь подключаем браузер:
browser = webdriver.Firefox()
Важно: я буду работать с драйвером Firefox, но если вы предпочитаете использовать Chrome — конструкция вызова драйвера Chrome будет выглядеть следующим образом:
browser = webdriver.Chrome()
Итак… все необходимые библиотеки (время, управление браузером, клавиатурой) — подключены. Подключен драйвер. Теперь нужно загрузить нужную ссылку. Делается это следующим образом:
browser.get(‘https://tema.livejournal.com’)
т.е. фактически мы говорим нечто вроде: браузер, а открой-ка ссылку…
Теперь начинаем цикл, который будет работать до момента, пока будет что открывать:
while True:
после чего используем конструкцию:
bottom = browser.find_element_by_partial_link_text(‘<< Previous 10 entries').click() которая на человеческом языке выглядит как: переменная будет состоять из браузера, в котором нужно найти ссылку по ее названию «<< Previous 10 entries", после чего по ней кликнуть И наконец, после того, как наш робот (а чем это не робот-то?) кликнул по ссылке - нужно подождать 10 секунд: time.sleep(10)
Собственно … это все. Простейшая конструкция по поиску и клику по ссылке в браузере готова 🙂
Важное дополнение:
Правильным в конце работы нашего кода будет отправить команду на закрытие окна браузера:
browser.close(), но учитывая, что наша задача — поиск ссылки по названию, и долистать до самого начала Темыного блога — этот пункт мы пока использовать не будем.
Код в полном виде доступен ниже:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Chrome()
browser.get('https://tema.livejournal.com')
while True:
bottom = browser.find_element_by_partial_link_text('<< Previous 10 entries').click()
time.sleep(10)
В случае возникновения вопросов - пожалуйста, задавайте 🙂
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️