Привет всем! Сегодня мы узнаем, как делать поиск ссылки по названию и осуществлять переход по ней с помощью 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)
В случае возникновения вопросов — пожалуйста, задавайте 🙂