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

Как парсить данные с The Pro's Closet с помощью Python

Как парсить данные с The Pro's Closet с помощью Python
просмотров
4 мин чтение
#Автоматизация

Добро пожаловать снова....The Pro's Closet - это источник сертифицированных подержанных велосипедов, штаб-квартира онлайн-магазина, который продает подержанные велосипеды всех видов, а также одежду и снаряжение. Мы будем использовать Python, поэтому, если у вас нет опыта работы с Python, я рекомендую освежить свои знания по этому языку.

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

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

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

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

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

Процесс The Pros ClosetСледующий шаг - это веселая часть. Нажмите на расширение DK, которое мы установили ранее, и нажмите "начать запись". Это определенно не будет сложной задачей, но, к счастью, у вас есть я здесь, чтобы помочь.

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

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

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

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

# нажать на найденный элемент (Поиск)
driver.find_element_by_pro(‘27YX7c5sXOovNEA’).click()

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

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

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

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

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

# получить текст элемента
 title=list_element.find_element_by_pro(‘bBS1oFQHrJW5put’).text
 # получить ссылку элемента
link=list_element.find_element_by_pro(‘Zxs98PHhao7PiPr’).get_attribute(‘href’)
 # получить текст элемента
 price=list_element.find_element_by_pro(‘iYUCkapyekcpC5O’).text

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

Полный кодВ случае, если вы застряли или запутались, вот весь код для этого проекта:

from selenium_pro import webdriver
import time
from selenium_pro.webdriver.common.keys import Keys
driver = webdriver.Start()
# открыть URL в браузере
driver.get(‘[https://www.theproscloset.com/'](https://www.theproscloset.com/'))
time.sleep(3)
# нажать на найденный элемент (Поиск)
driver.find_element_by_pro(‘27YX7c5sXOovNEA’).click()
# ввести текст в поле ввода
driver.find_element_by_pro(‘Xdas06ZStAdyhgN’).send_keys(‘bike’)
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(3)
# получить текст элемента
 title=list_element.find_element_by_pro(‘bBS1oFQHrJW5put’).text
 # получить ссылку элемента
link=list_element.find_element_by_pro(‘Zxs98PHhao7PiPr’).get_attribute(‘href’)
 # получить текст элемента
 price=list_element.find_element_by_pro(‘iYUCkapyekcpC5O’).text

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

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

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

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