Как парсить данные с помощью Python из Sapphire
Table Of Content
Добро пожаловать снова.... Магазин одежды Sapphire предлагает онлайн-шопинг для незашитого льна, готовых к ношению женских платьев, дизайна мужских курт, макияжа, простыней, западной одежды, детской одежды. Мы будем использовать Python, поэтому, если у вас нет опыта работы с Python, я рекомендую освежить свои знания по этому языку.
Как всегда, перед парсингом данных мы должны определить, какие конкретные данные нам нужно спарсить. После просмотра страницы я автоматически увидел множество разных данных, которые мы можем получить. В этом проекте мы будем парсить название продукта, ссылку на продукт и цену продуктов в Sapphire.
Приступим!
Основное введение, которое вы, вероятно, можете пропустить, я скопировал из своей другой статьи
Прежде всего, нам понадобится установить 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()
Я рекомендую запустить весь ваш код до этого момента и проверить, успешно ли он выполняется, если да, то вы практически готовы продолжить!
Sapphire PipelineСледующий шаг - самая интересная часть. Нажмите на расширение DK, которое мы установили ранее, и нажмите "начать запись". Это определенно не будет сложной задачей, но, к счастью, у вас есть я, чтобы помочь.
Откройте веб-сайт Sapphire и добавьте ожидание в 3 секунды, чтобы сайт загрузился, а затем выполните поиск по ключевому слову на сайте и нажмите Enter. Чтобы добавить ожидание, щелкните правой кнопкой мыши на экране и выберите "ожидание" -> "3". Теперь, если вы нажмете на расширение, вы обнаружите, что код уже есть в расширении, как показано ниже.
# открыть URL в браузере
driver.get(‘[https://pk.sapphireonline.pk/'](https://pk.sapphireonline.pk/'))
time.sleep(3)
Отлично! Это направит наш браузер Chrome Python на указанный выше веб-сайт, функция "time.sleep(3)" просто говорит Python подождать 3 секунды перед продолжением, это необязательно, но я все равно добавил это.
После этого расширение будет искать идентификатор с помощью driver.find_element_by_pro и выполнит click(), событие click будет нажимать на идентификатор
# нажать на найденный элемент
driver.find_element_by_pro(‘2i6VZtvtBi7NVTm’).click()
а send_keys(‘dress’) введет ключевое слово dress, а send_keys(Keys.ENTER) нажмет Enter
# нажать на поле ввода
driver.find_element_by_pro(‘xXgnozvkGSOeugC’).click()
# ввести содержимое в поле ввода
driver.find_element_by_pro(‘sPByLlHlhY2Oy1j’).send_keys(‘dress’)
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
Скопируйте код из расширения и протестируйте код до этого момента.
Получение данныхОтлично! Теперь давайте возобновим запись. После ввода ключевого слова на веб-сайте Sapphire наведите указатель на заголовок продукта, щелкните правой кнопкой мыши и выберите "скрапить" -> "текст", чтобы получить текст продукта.
Теперь, таким же образом, вы можете спарсить ссылку, название продукта и цену. В расширении ваши действия будут имитированы следующим образом:
# получить текст элемента
title=list_element.find_element_by_pro(‘yJEomP1ApYkaI3b’).text
# получить текст элемента
price=list_element.find_element_by_pro(‘ZHWsPiBPSERTq97’).text
# получить текст элемента
name=list_element.find_element_by_pro(‘rHTtN6qoZOhhppd’).text
# получить ссылку элемента
link=list_element.find_element_by_pro(‘LyU3jltofg2wNQJ’).get_attribute(‘href’)
Мы закончили... Поверьте или нет
Полный кодВ случае, если вы застряли или запутались, вот весь код для этого проекта:
from selenium_pro import webdriver
import time
from selenium_pro.webdriver.common.keys import Keys
driver = webdriver.Start()
# открыть URL в браузере
driver.get(‘[https://pk.sapphireonline.pk/'](https://pk.sapphireonline.pk/'))
time.sleep(3)
# нажать на найденный элемент
driver.find_element_by_pro(‘2i6VZtvtBi7NVTm’).click()
# нажать на поле ввода
driver.find_element_by_pro(‘xXgnozvkGSOeugC’).click()
# ввести содержимое в поле ввода
driver.find_element_by_pro(‘sPByLlHlhY2Oy1j’).send_keys(‘dress’)
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(3)
# получить текст элемента
title=list_element.find_element_by_pro(‘yJEomP1ApYkaI3b’).text
# получить текст элемента
price=list_element.find_element_by_pro(‘ZHWsPiBPSERTq97’).text
# получить текст элемента
name=list_element.find_element_by_pro(‘rHTtN6qoZOhhppd’).text
# получить ссылку элемента
link=list_element.find_element_by_pro(‘LyU3jltofg2wNQJ’).get_attribute(‘href’)
Запуск этой программыТеперь, чтобы запустить эту программу, скопируйте код из расширения и сохраните его как файл .py > откройте ваш терминал / командную строку и введите следующую команду:
python3 ПУТЬ/К/ВАШЕМУ/ФАЙЛУ.PY
Или, если вы используете среду разработки, такую как Pycharm, просто запустите программу в ней. Когда вы запустите эту программу, вы увидите, что открывается браузер Chrome, он будет ждать несколько секунд, а затем выведет точки данных в консоль Python!
Поздравляю! Я рекомендую поискать способы улучшить этот проект: Можете ли вы добавить фронтенд, где люди могут размещать свои ссылки? Можете ли вы добавить цикл для парсинга всех ссылок и текста со всех страниц? В противном случае, вам следует гордиться собой за то, что вы прошли через этот учебник!