CoderCastrov logo
CoderCastrov
Питон

Как парсить данные с Love pop с использованием Python

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

Добро пожаловать снова... Love pop известен своими уникальными открытками и 3D-артом из бумаги онлайн с бесплатной доставкой для любого случая. Персонализируйте, запланируйте и отправьте открытки напрямую кому угодно. LovePop - это компания, которая участвовала в когорте Class 53 - Boston 2015 Summer. Мы будем использовать 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()

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

Love Pop Pipeline

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

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

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

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

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

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

и send_keys('card') введет ключевое слово "card", а затем click() нажмет на выбранную клавишу:

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

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

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

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

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

# для получения текста элемента
product_name = list_element.find_element_by_pro('44Ump2IGNjiCyXy').text
# для получения ссылки элемента
product_link = list_element.find_element_by_pro('fG28Wv0zffQMMAx').get_attribute('href')
# для получения текста элемента
price = list_element.find_element_by_pro('OWTXOQQqlQFtx8g').text
# для получения текста элемента
reviews = list_element.find_element_by_pro('pG6jovXpkvxJ2vo').text

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

from selenium_pro import webdriver
import time
from selenium_pro.webdriver.common.keys import Keys
driver = webdriver.Start()
# открыть URL в браузере
driver.get(‘[https://www.lovepop.com/'](https://www.lovepop.com/'))
time.sleep(2)
# кликнуть на поле ввода
driver.find_element_by_pro(‘tsf33i8QCOVDVB6’).click()
# ввести текст в поле ввода
driver.find_element_by_pro(‘0gAjUiU1y4l9k7b’).send_keys(‘wing’)
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(3)
# получить текст элемента
product_name=list_element.find_element_by_pro(‘44Ump2IGNjiCyXy’).text
# получить ссылку элемента
product_link=list_element.find_element_by_pro(‘fG28Wv0zffQMMAx’).get_attribute(‘href’)
# получить текст элемента
price=list_element.find_element_by_pro(‘OWTXOQQqlQFtx8g’).text
# получить текст элемента
reviews=list_element.find_element_by_pro(‘pG6jovXpkvxJ2vo’).text

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

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

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

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

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