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

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

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

Добро пожаловать снова! Bombas - это бренд одежды. Компания изначально продавала носки и начала продавать футболки в 2019 году. За каждый купленный товар одежда передается в приют для бездомных или благотворительную организацию, связанную с бездомными. В этом проекте мы будем использовать Python, поэтому, если у вас нет опыта работы с Python, я рекомендую освежить свои знания по этому языку.

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

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

Основное введение, которое можно пропустить

Прежде всего, нам понадобится установить Python, убедитесь, что у вас установлен Python и какая-то среда разработки. Selenium pro - это пакет для парсинга веб-страниц, который позволяет нам имитировать веб-браузер с помощью Python. Возможно, лучше иметь представление о парсинге веб-страниц. Установите пакет 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()

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

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

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

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

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

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

# нажать на найденный элемент
driver.find_element_by_pro(‘uK3Ab6SyjUT9vtK’).click()

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

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

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

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

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

# получить текст элемента
title = list_element.find_element_by_pro(‘YSMsyYwwny9oWDw’).text
# получить текст элемента
price = list_element.find_element_by_pro(‘8jFO2LDfCKRLuaU’).text
# получить ссылку элемента
link = list_element.find_element_by_pro(‘64YnRxdF0Voz6PD’).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://bombas.com/'](https://bombas.com/'))
time.sleep(3)
# нажать на найденный элемент
driver.find_element_by_pro(‘uK3Ab6SyjUT9vtK’).click()
# ввести текст в поле ввода
driver.find_element_by_pro(‘FQ1bojkntlKW9mM’).send_keys(‘shirt’)
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(3)
# получить текст элемента
title = list_element.find_element_by_pro(‘YSMsyYwwny9oWDw’).text
# получить текст элемента
price = list_element.find_element_by_pro(‘8jFO2LDfCKRLuaU’).text
# получить ссылку элемента
link = list_element.find_element_by_pro(‘64YnRxdF0Voz6PD’).get_attribute(‘href’)

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

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

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

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