CoderCastrov logo
CoderCastrov
Питон

Как парсить данные с помощью Python с сайта Static Nails

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

Добро пожаловать снова....Static Nails предоставляет искусственные ногти, также известные как поддельные ногти, ложные ногти, модные ногти, акриловые ногти, наращивание ногтей или укрепление ногтей, которые носятся как аксессуары моды... Мы будем использовать Python, поэтому, если у вас нет опыта работы с Python, я рекомендую освежить свои знания по этому языку.

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

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

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

Прежде всего, нам понадобится установленный Python, убедитесь, что у вас установлен Python и какая-то среда разработки. Selenium pro - это пакет для парсинга данных с веб-сайтов, который позволяет нам имитировать веб-браузер с помощью Python, поэтому лучше иметь представление о парсинге данных с веб-сайтов. Установите пакет 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()

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

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

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

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

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

# кликнуть по найденному элементу
driver.find_element_by_pro('5NQehOno1AOo8rl').click()

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

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

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

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

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

# получить текст элемента
price = list_element.find_element_by_pro('VzYRR8KlqU8joAp').text
# получить текст элемента
name = list_element.find_element_by_pro('ZM8TEne0fLRplZq').text
# получить текст элемента
title = list_element.find_element_by_pro('9M6kanrbiXj78oN').text
# получить ссылку элемента
link = list_element.find_element_by_pro('3bJVlWBTao6Uq75').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://staticnails.com/')
time.sleep(3)
# кликнуть по найденному элементу
driver.find_element_by_pro('5NQehOno1AOo8rl').click()
# кликнуть по полю ввода
driver.find_element_by_pro('MtH0oCHe2aeFXcM').click()
# ввести текст в поле ввода
driver.find_element_by_pro('BY1QuzF1BiaceuJ').send_keys('nail')
# нажать клавишу Enter
driver.switch_to.active_element.send_keys(Keys.ENTER)
time.sleep(3)
# получить текст элемента
price = list_element.find_element_by_pro('VzYRR8KlqU8joAp').text
# получить текст элемента
name = list_element.find_element_by_pro('ZM8TEne0fLRplZq').text
# получить текст элемента
title = list_element.find_element_by_pro('9M6kanrbiXj78oN').text
# получить ссылку элемента
link = list_element.find_element_by_pro('3bJVlWBTao6Uq75').get_attribute('href')

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

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

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