CoderCastrov logo
CoderCastrov
Парсер

Парсинг с помощью Selenium

Парсинг с помощью Selenium
просмотров
4 мин чтение
#Парсер
Table Of Content

    Когда я начал свой путь в анализе данных, моим первым источником был YouTube. Я нашел канал Люка Барусса и он открыл для меня новый мир. Это был 2020 год, середина пандемии, и у меня было много свободного времени, поэтому я решил немного изучить это, чтобы посмотреть, как это работает. По мере того, как я становился все более заинтересованным, я решил, что, может быть, настало время для изменения карьеры, и решил потратить немного денег на онлайн-курс, потому что на бесплатном контенте на YouTube можно полагаться только до определенного предела.

    Хотя все видео, которые я видел онлайн о пути аналитика данных, рекомендовали начать обучение с SQL, я решил, что знаю лучше и сразу перешел к Python, так как он кажется намного круче, чем SQL. Но все эти видео были правы, SQL гораздо более востребован для должности младшего специалиста, поэтому я остановился с Python и сосредоточился на SQL. Но не полностью.

    Python круче, и это неоспоримо. Он также дает нам гораздо больше возможностей, и я обнаружил это с помощью Selenium. Как говорится на их собственном сайте, "Selenium - это проект-зонтик для ряда инструментов и библиотек, которые позволяют и поддерживают автоматизацию веб-браузеров". Меня очень заинтересовало, что я могу сделать с его помощью, и я решил начать небольшой проект и выяснить, какие пять самых популярных (с наибольшим количеством одобрений) фанфиков на Archive of Our Own, и я покажу вам, как я это сделал.

    importing the packages and opening the browser

    Во-первых, конечно, мы импортируем пакеты, их не так много, поэтому эта часть простая. Затем нам нужно загрузить веб-драйвер для нашего браузера. Я использую Chrome, но вы можете выбрать любой другой браузер, вы можете перейти на сайт Selenium и проверить его для используемого вами браузера (Установка драйверов браузера | Selenium). После загрузки вам просто нужно сохранить расположение в переменной, как я сделал с PATH, а затем открыть ссылку, на которую вы хотите получить доступ с помощью функции .get.

    agreeing to the terms selecting filters

    На этом этапе нам нужно проанализировать страницу, чтобы понять, с чем мы имеем дело. Теперь, когда сайт открыт, есть несколько подходов, в зависимости от того, что происходит на вашей странице. На моей, например, мы должны согласиться с условиями и положениями, поэтому я использую функцию .find_element_by_id, чтобы найти флажок с условиями и положениями, а затем щелкнуть по нему с помощью функции .click. Я знаю, что это звучит глупо сказать, но не забудьте про щелчок, это не произойдет магическим образом! Поверьте мне, я забыл в первый раз и просто смотрел на код, задаваясь вопросом, почему он не работает.

    Теперь, если вы немного знакомы с ao3, как и я, вы знаете, что просто поиск фанфика в строке поиска - это рецепт для чего угодно, но не того, что вы хотите. Поэтому нажимаем ссылку на тот тип медиа, который вы хотите, а затем на конкретное название, которое вы хотите прочитать. Для этого я решил добавить немного настройки. Я использовал find_element_by_partial_link_text, чтобы найти ссылку на странице и добавил к ней ввод, чтобы у нас появилось всплывающее окно, в которое мы можем ввести тип медиа, который мы хотим, и затем оно будет нажато. То же самое сделайте и для конкретного медиа, которое вы хотите прочитать. Таким образом, вы можете, например, ввести Книги, а затем Гарри Поттер, и у нас будут все работы из фандома Гарри Поттера.

    selecting filters selecting filters

    Теперь мы фильтруем список, чтобы отсортировать его так, как я хочу, то есть только завершенные работы, отсортированные по наибольшему количеству одобрений.

    Чтобы открыть список и выбрать, как отсортировать работы, мы будем использовать select вместо click. Немного по-другому, но не слишком сложно. Здесь я подумал, что самым простым решением будет использование select_by_visible_text и выбор kudos.

    Затем мы просто делаем то же самое 3 раза, находим то, что мы хотим выбрать, и щелкаем по нему. Для переключателя радио есть небольшой трюк. Иногда, когда вы пишете код, одно работает, а другое - нет, и вы не знаете, почему. Вы просто должны принять это, c'est la vie. Функция .execute_script - это то, что делает работу щелчка. Просто плывите по течению.

    selecting filters

    И завершающий штрих приходит в виде цикла for, чтобы получить информацию о первых 5 самых популярных фанфиках. Мы выбираем список с информацией о всех работах и затем проходим через него, чтобы получить все работы, добавляя немного пробела между каждой работой, чтобы сделать ее более читаемой.

    Вы можете адаптировать этот код для поиска информации на любом сайте, возможности бесконечны!