CoderCastrov logo
CoderCastrov
Питон

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

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

Добро пожаловать снова... REAL стал номером один в мире по продаже и обучению кайтсерфингу и серфингу. Мы доставляем снаряжение по всему миру из нашего удивительного дома в Кейп-Хаттерас, Северная Каролина, и стремимся предоставить наивысший уровень обслуживания клиентов. Мы будем использовать Python, поэтому, если у вас нет опыта работы с Python, рекомендуется освежить знания этого языка.

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

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

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

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

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

Реальные водные виды спорта - Pipeline

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

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

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

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

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

# кликнуть по полю ввода
driver.find_element_by_pro('UVHWlXmMNeu8cxp').click()

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

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

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

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

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

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

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

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

from selenium_pro import webdriver
import time
from selenium_pro.webdriver.common.keys import Keys
driver = webdriver.Start()
# открыть URL в браузере
driver.get('[https://www.realwatersports.com/'](https://www.realwatersports.com/'))
time.sleep(2)
# нажать на поле ввода
driver.find_element_by_pro('UVHWlXmMNeu8cxp').click()
# ввести текст в поле ввода
driver.find_element_by_pro('uJZyCCTREMwqJYz').send_keys('kit')
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
# получить текст элемента
product_name=list_element.find_element_by_pro(‘nxxJAMhimphwTCl’).text
# получить ссылку на элемент
product_link=list_element.find_element_by_pro(‘P4DcYEkRjBEjXVH’).get_attribute(‘href’)
# получить текст элемента
price=list_element.find_element_by_pro(‘Bkp5Szqc5pAY8cf’).text

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

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

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

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

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