CoderCastrov logo
CoderCastrov
Питон

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

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

Добро пожаловать снова... Passion Planner - это единое место для всех ваших мыслей. Это не просто планировщик - это инструмент, который помогает вам разбить ваши краткосрочные и долгосрочные цели и внедрить их в вашу повседневную жизнь. Он разработан, чтобы побудить вас планировать будущее, размышлять о прошлом, но, самое главное, действовать в настоящем. Мы будем использовать 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 в качестве нашего GUI, но вы можете использовать другие браузеры в Selenium pro, если хотите использовать другой браузер, делайте это! Убедитесь, что конкретный браузер установлен на вашей машине.

Теперь, внутри Selenium pro, нам нужно определить наш веб-браузер, давайте сделаем это с помощью следующей строки кода:

driver = webdriver.Start()

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

Passion Planner Pipeline

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

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

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

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

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

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

send_keys('book') введет ключевую фразу, а send_keys(Keys.ENTER) нажмет Enter.

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

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


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

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

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

# для получения текста элемента
название_продукта = элемент_списка.find_element_by_pro('8j3cfxJupXsPnEh').text
# для получения ссылки на элемент
ссылка_на_продукт = элемент_списка.find_element_by_pro('fYKDwTo2drrVZl1').get_attribute('href')
# для получения текста элемента
цена = элемент_списка.find_element_by_pro('L8y85fmMDs87zi9').text

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

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
# открыть URL в браузере
driver.get('https://passionplanner.com/')
time.sleep(3)
# нажать на поле ввода
driver.find_element_by_id('p7mq5YDrjCal6r0').click()
# ввести текст в поле ввода
driver.find_element_by_id('9DXiJCAfeen3lK9').send_keys('книга')
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(3)
# получить текст элемента
product_name = driver.find_element_by_id('8j3cfxJupXsPnEh').text
# получить ссылку элемента
product_link = driver.find_element_by_id('fYKDwTo2drrVZl1').get_attribute('href')
# получить текст элемента
price = driver.find_element_by_id('L8y85fmMDs87zi9').text

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

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

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

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

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


Опубликовано на https://medium.com 19 сентября 2022 года.