CoderCastrov logo
CoderCastrov
Автоматизация

Как парсить данные с Roolee с использованием Python

Как парсить данные с Roolee с использованием Python
просмотров
4 мин чтение
#Автоматизация

Снова привет…. Roolee - это женский бренд одежды, вдохновляющий на самолюбие и искреннюю сестринскую любовь. Здесь вы можете найти последнюю коллекцию одежды, аксессуаров, предметов декора для дома, детской одежды и многое другое. Мы будем использовать Python, поэтому, если у вас нет опыта работы с Python, я рекомендую освежить свои знания по этому языку.

Как всегда, перед парсингом веб-страницы нам нужно определить, какие именно данные нам нужно получить. После просмотра страницы я сразу увидел множество различных данных, которые мы можем получить. В этом проекте мы будем парсить название продукта, ссылку на продукт и цену продуктов на Roolee.

Давайте начнем!

Основное введение, которое вы, вероятно, можете пропустить, я скопировал из своей другой статьи

Прежде всего, нам понадобится установить Python, убедитесь, что у вас установлен Python и какая-нибудь среда разработки (IDE). Selenium pro - это пакет для парсинга веб-страниц, который позволяет нам имитировать веб-браузер с помощью Python, поэтому лучше иметь представление о парсинге веб-страниц. Пакет Selenium pro - https://pypi.org/project/selenium-pro/

pip install selenium-pro

Установка расширения

Загрузите Selenium Auto Code Generator из Chrome Web Store, чтобы не копировать и вставлять xpath, это инструмент поможет и упростит процесс, без необходимости копирования и вставки. Загрузите его здесь - https://chrome.google.com/webstore/detail/selenium-auto-code-genera/ocimgcpcnobcnmclomhhmjidgoiekeaf/related

Начинаем!

Теперь, когда у нас настроена среда Python, давайте откроем пустой скрипт Python. Давайте импортируем пакет Selenium pro, который вы, надеюсь, предварительно установили (просто выполните pip install selenium-pro). После установки импортируйте следующие пакеты:

from selenium_pro import webdriver
import time
from selenium_pro.webdriver.common.keys import Keys

Мы используем браузер Google Chrome в качестве графического интерфейса, но вы можете использовать другие браузеры внутри Selenium pro, если хотите использовать другой браузер, пожалуйста, используйте его! Убедитесь, что соответствующий браузер установлен на вашем компьютере.

Теперь внутри Selenium pro нам нужно определить наш веб-браузер, поэтому давайте сделаем это с помощью следующей строки кода:

driver = webdriver.Start()

Я рекомендую запустить весь ваш код до этого момента и проверить, успешно ли он выполняется. Если да, то вы практически готовы продолжать!

Roolee PipelineСледующий этап - это веселая часть. Нажмите на расширение DK, которое мы установили ранее, и нажмите "start recording". Это определенно не будет сложной задачей, но к счастью у вас есть я, чтобы помочь.

Откройте веб-сайт Roolee и добавьте задержку в 3 секунды, чтобы веб-сайт загрузился, а затем выполните поиск ключевого слова на веб-сайте и нажмите Enter. Чтобы добавить задержку, щелкните правой кнопкой мыши на экране и выберите "wait" -> 3. Теперь, если вы щелкнете по расширению, вы увидите, что код уже есть в расширении, как показано ниже.

# открыть URL в браузере
driver.get(‘[https://roolee.com/'](https://roolee.com/'))
time.sleep(3)

Отлично! Это указывает нашему браузеру Chrome Python открыть указанный веб-сайт выше, функция "time.sleep(3)" просто говорит Python подождать 3 секунды перед продолжением работы, это необязательно, но я все равно добавил это.

После этого расширение будет искать идентификатор с помощью driver.find_element_by_pro и выполнит клик(), событие клика выполнится по идентификатору.

# выполнить клик по найденному элементу
driver.find_element_by_pro(‘yEGqLwWaqHJVfMB’).click()

а send_keys(‘top’) введет ключевое слово "top", а send_keys(Keys.ENTER) нажмет Enter

# ввести текст в поле ввода
driver.find_element_by_pro(‘URNLM4K7ukKOLgh’).send_keys(‘top’)
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)

Скопируйте код из расширения и протестируйте код до этого момента.

Получение данныхОтлично! Теперь давайте продолжим запись. После ввода ключевого слова на веб-сайте Roolee наведите курсор на название продукта, щелкните правой кнопкой мыши и выберите "scrape" -> "text", чтобы получить текст продукта.

Теперь вы можете получить ссылку и цену таким же образом. В расширении ваши действия будут имитированы следующим образом:

# получить текст элемента
title = list_element.find_element_by_pro(‘4KyyT5ph16firOZ’).text
# получить текст элемента
price = list_element.find_element_by_pro(‘LWRFrTw2atT4B7L’).text
# получить ссылку элемента
link = list_element.find_element_by_pro(‘kTuXOIXK8tMFWss’).get_attribute(‘href’)

Мы закончили... верите или нет

Полный кодВ случае, если вы застряли или запутались, вот весь код для этого проекта:

from selenium_pro import webdriver
import time
from selenium_pro.webdriver.common.keys import Keys
driver = webdriver.Start()
# открыть URL в браузере
driver.get(‘[https://roolee.com/'](https://roolee.com/'))
time.sleep(3)
# выполнить клик по найденному элементу
driver.find_element_by_pro(‘yEGqLwWaqHJVfMB’).click()
# ввести текст в поле ввода
driver.find_element_by_pro(‘URNLM4K7ukKOLgh’).send_keys(‘top’)
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(3)
# получить текст элемента
title = list_element.find_element_by_pro(‘4KyyT5ph16firOZ’).text
# получить текст элемента
price = list_element.find_element_by_pro(‘LWRFrTw2atT4B7L’).text
# получить ссылку элемента
link = list_element.find_element_by_pro(‘kTuXOIXK8tMFWss’).get_attribute(‘href’)

Запуск этой программыТеперь, чтобы запустить эту программу, скопируйте код из расширения и сохраните его как файл .py > откройте терминал / командную строку и введите следующую команду:

python3 ПУТЬ/К/ВАШЕМУ/ФАЙЛУ.PY

Или, если вы используете среду разработки, такую ​​как Pycharm, просто запустите программу в ней. При запуске этой программы вы увидите, что открывается браузер Chrome, он будет ждать несколько секунд, а затем выведет данные в консоль Python!

Поздравляю! Я рекомендую поискать способы улучшить этот проект: можете ли вы добавить интерфейс, где люди могут размещать свои ссылки? Можете ли вы добавить цикл для парсинга всех ссылок и текста со всех страниц? В противном случае, вы должны гордиться собой за то, что прошли этот учебник!