CoderCastrov logo
CoderCastrov
Selenium

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

Как парсить данные с Sound True с помощью Python
просмотров
4 мин чтение
#Selenium

Добро пожаловать снова... Эта компания публикует более 800 аудио- и музыкальных записей, книг, мультимедийных обучающих материалов и онлайн-программ образования от известных специалистов в области духовности, психологии, здоровья и исцеления, включая авторов, чьи книги попали в список бестселлеров NY-Times, таких как Майкл А. Мы будем использовать 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()

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

Пайплайн Sound True

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

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

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

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

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

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

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

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

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


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

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

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

# для получения текста элемента
product_name=list_element.find_element_by_pro(‘gGIsWOV2YhLEj62’).text
# для получения ссылки элемента
product_link=list_element.find_element_by_pro(‘SqCqBgBWtPb14bn’).get_attribute(‘href’)
# для получения текста элемента
description=driver.find_element_by_pro(‘CMUsXVRcCxhHSF7’).text
# для получения текста элемента
price=list_element.find_element_by_pro(‘qdq8dWAlHDeu2az’).text

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

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
# открыть URL в браузере
driver.get('https://www.soundstrue.com/')
time.sleep(3)
# нажать на поле ввода
driver.find_element_by_id('OeqF5mXtpKIZhmX').click()
# ввести текст в поле ввода
driver.find_element_by_id('tj5NP9hVOouwt78').send_keys('sound')
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
# получить текст элемента
product_name = driver.find_element_by_id('gGIsWOV2YhLEj62').text
# получить ссылку элемента
product_link = driver.find_element_by_id('SqCqBgBWtPb14bn').get_attribute('href')
# получить текст элемента
description = driver.find_element_by_id('CMUsXVRcCxhHSF7').text
# получить текст элемента
price = driver.find_element_by_id('qdq8dWAlHDeu2az').text

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

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

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

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

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