CoderCastrov logo
CoderCastrov
Питон

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

Как парсить данные с Morphe с использованием Python
просмотров
4 мин чтение
#Питон

Добро пожаловать снова... Morphe предлагает полный ассортимент косметики и инструментов для макияжа, включая кисти, палетки теней для век, тональные средства, консилеры, помады, хайлайтеры, контурные продукты и многое другое. Основанная в 2008 году среди художников и влиятельных личностей Лос-Анджелеса, Morphe заслужила свою репутацию благодаря смелому подходу к макияжу, который почитает индивидуальность и самовыражение. Мы будем использовать Python, поэтому, если у вас нет опыта работы с Python, я рекомендую освежить свои знания по этому языку.

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

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

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

Прежде всего, нам понадобится установить 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()

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

Morphe Pipeline

Далее следует интересная часть, нажмите на расширение DK, которое мы установили ранее, и нажмите "начать запись". Это определенно не будет сложной задачей, но к счастью у вас есть я здесь.

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

# открыть URL в браузере
driver.get('https://uk.morphe.com/')
time.sleep(2)

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

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

# выполнить клик по найденному элементу
driver.find_element_by_pro('l5VP1Cgj3kn3bdk').click()
time.sleep(1)
# выполнить клик по полю ввода
driver.find_element_by_pro('HLCW8QAhugJj4eJ').click()

а send_keys('gold') введет ключевое слово "gold", а send_keys(Keys.ENTER) нажмет клавишу Enter.

# ввести текст в поле ввода
driver.find_element_by_pro('cM8W4tEi6R9TQR9').send_keys('gold')
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(3)

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

Получение данных

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

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

# для получения текста элемента
product_name=list_element.find_element_by_pro('i25S49b3ECOH4D8').text
# для получения ссылки элемента
product_link=list_element.find_element_by_pro('2ycJ6ExZH4YIkUT').get_attribute('href')
# для получения текста элемента
price=list_element.find_element_by_pro('lxZcC8mJzUBYFGe').text

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

from selenium_pro import webdriver
import time
from selenium_pro.webdriver.common.keys import Keys
driver = webdriver.Start()
# открыть URL в браузере
driver.get('[https://uk.morphe.com/'](https://uk.morphe.com/'))
time.sleep(2)
# нажать на найденный элемент
driver.find_element_by_pro('l5VP1Cgj3kn3bdk').click()
time.sleep(1)
# нажать на поле ввода
driver.find_element_by_pro('HLCW8QAhugJj4eJ').click()
# ввести текст в поле ввода
driver.find_element_by_pro('cM8W4tEi6R9TQR9').send_keys('gold')
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(3)
# получить текст элемента
product_name=list_element.find_element_by_pro(‘i25S49b3ECOH4D8’).text
# получить ссылку элемента
product_link=list_element.find_element_by_pro(‘2ycJ6ExZH4YIkUT’).get_attribute(‘href’)
# получить текст элемента
price=list_element.find_element_by_pro(‘lxZcC8mJzUBYFGe’).text

Запуск этой программы

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

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

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

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