CoderCastrov logo
CoderCastrov
Питон

Как парсить данные с Luxy Hair с помощью Python

Как парсить данные с Luxy Hair с помощью Python
просмотров
4 мин чтение
#Питон

Добро пожаловать снова... Еще один веб-сайт, Luxy Hair extensions, помогает женщинам по всему миру чувствовать себя уверенно, красиво и силой. Они очень благодарны и смирены быть частью вашей трансформации. Мы будем использовать 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()

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

Пайплайн Luxy Hair

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

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

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

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

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

# нажать на найденный элемент
driver.find_element_by_pro('FbVNVUz6r7Yorv9').click()
time.sleep(1)
# нажать на поле ввода
driver.find_element_by_pro('2frSNKiKX3SCoW6').click()

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

# ввести содержимое в поле ввода
driver.find_element_by_pro('nO8sOcbot0wsLTs').send_keys('bun')
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(2)

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

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

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

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

# для получения текста элемента
название_продукта = элемент_списка.find_element_by_pro(‘XCXPo3JaPUO1zI1’).text
# для получения ссылки элемента
ссылка_продукта = элемент_списка.find_element_by_pro(‘N6AVi5MUwFLhsVi’).get_attribute(‘href’)
# для получения текста элемента
описание = элемент_списка.find_element_by_pro(‘0zqLXLS0XLDbRd3’).text

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

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
# открытие URL в браузере
driver.get('https://www.luxyhair.com/')
time.sleep(2)
# нажатие на найденный элемент
driver.find_element_by_id('FbVNVUz6r7Yorv9').click()
time.sleep(1)
# нажатие на поле ввода
driver.find_element_by_id('2frSNKiKX3SCoW6').click()
# ввод текста в поле ввода
driver.find_element_by_id('nO8sOcbot0wsLTs').send_keys('пучок')
# нажатие клавиши Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(2)
# получение текста элемента
product_name = driver.find_element_by_id('XCXPo3JaPUO1zI1').text
# получение ссылки элемента
product_link = driver.find_element_by_id('N6AVi5MUwFLhsVi').get_attribute('href')
# получение текста элемента
description = driver.find_element_by_id('0zqLXLS0XLDbRd3').text

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

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

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

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

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