{"id":8499,"title":"vc.ru \u0438\u0449\u0435\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u0430 ","url":"\/redirect?component=advertising&id=8499&url=https:\/\/vc.ru\/team\/314459-vypuskayushchiy-prodyuser-kreativnogo-otdela&placeBit=1&hash=34698330acc58f51615fd71105e84a558eebd5a4f60d32de70f3a794ef4ca846","isPaidAndBannersEnabled":false}
Дмитрий Кулагин

Как самостоятельно спарсить данные с интернет-магазина при помощи Python

По рабочим задачам часто сталкиваюсь с задачами по парсингу. В этой короткой статье я покажу как сделать свой парсер, который будет получать данные с сайта Pleer.ru по ссылке из любой категории с листингом товаров — название, цену, заголовок страницы товара, id.

Статья написана в образовательных целях. Код сайта со временем изменится и скрипт не будет работать путём копипаста, нужно будет изменить XPath-выражения.

Инструментарий: Python 3 + библиотеки

Я буду использовать Python 3 и некоторые распространенные библиотеки Python.

Вот некоторые данные, которые этот парсер поможет вам извлечь в csv-таблицу:

  • Называние
  • Цена
  • Id
  • Title

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

Сохраню данные в виде электронной таблицы Excel (CSV), которая выглядит следующим образом:

Установка необходимых пакетов

Тут я не рассказываю про основы Python и как его установить, это тема отдельной статьи. Буду использовать следующие библиотеки:

  • requests
  • csv
  • time
  • lxml

Устанавливаю их с помощью pip3:

pip3 install requests, csv, time, lxml

Код проекта на Python

Все исходники загрузил на Github по адресу https://github.com/Megaduox/parser_pleer.ru.

Внутри три функции:

  • get_links() — принимает на вход url, берёт все ссылки с него на товары из листинга, проходит по всей пейдижнации и складывает ссылки в множество QUEUE_URL
  • get_data() — принимает на вход один урл товара, парсит данные. Сами данные никуда не записывает, а возвращает список данных в виде словаря.
  • main() — точка входа. Записывает получившиеся данные в файл csv, вызывая в своей работе get_links() для парсинга списка всех товаров и рекурсивно get_data() для парсинга конкретного урла.

Проблемы, с которыми вы можете столкнуться

  • Сайт при парсинге отдаёт код 204, страница рабочая, но без контента. Решается добавлением рандомных хедеров.
  • Для того, чтобы сайт не забанил при парсинге, нужно делать задержку между запросами рандомом в несколько секунд.
  • Пейджинация чуть хитрее, потому что несуществующие страницы отдают 200 код, а не 404 и поэтому их нельзя перебрать в цикле стандартным способом.
  • Чтобы парсить весь сайт нужно пилить либо через прокси, либо через Selenium.
  • Если товара нет в наличии на странице, то в csv-файле будет пустая ячейка, потому что меняется вёрстка.

Список выше только часть проблем, с которыми сталкиваешься при парсинге и у каждого сайта они могут быть индивидуальны, особенно, если проект крупный.

0
0 комментариев
Популярные
По порядку
Читать все 0 комментариев
Сервис «Кухня на районе» отменил бесплатную доставку еды Статьи редакции

Пока доставка стоит 1 рубль, но в ближайшее время цена будет динамической — в зависимости от погоды и нагрузки курьеров.

Мысли создателя FastAPI Себастьяна Рамиреса из интервью Evrone

Себастьян Рамирез — энтузиаст open source, создатель таких популярных инструментов, как FastAPI, Typer и SQLModel. В интервью он поделился мнением о собственных проектах, образовании для разработчиков и собственной популярности в Twitter. Полный текст доступен по ссылке.

Омикрон проверит работоспособность стратегии покупки акций на спадах

Появление варианта омикрон позволит вновь проверить работоспособность стратегии покупки на спадах, которая в этом году пока сбоев не давала.

Невидимый убийца: как воздух в вашем офисе делает вас глупее

Важное исследование, которое должно заставить все компании пересмотреть свои офисы.

Что там с видеорегистраторами: где за них штрафуют, а где — дают скидку на страховку

Регуляторы вновь в деле. На этот раз они могут затронуть видеорегистраторы. Расскажу о ситуации с точки зрения страхового эксперта.

MIKI Yoshihito / Flickr / CC BY 2.0
Новые гарантии для одиноких родителей

Государственная Дума РФ 9 ноября 2021 года приняла в третьем чтении закон, предоставляющий дополнительные гарантии отдельным категориям работников, имеющих несовершеннолетних дней, и вносящий поправки в Трудовой Кодекс РФ.

Опыт возврата денег за обучение дизайну у Yakovlevv.com. Тварь я дрожащая или право имею?
Бизнесменам разрешат перевести личные фонды в российские офшоры

Согласно проекту поправок Минэкономразвития РФ к закону "О международных компаниях и международных фондах" министерство планирует разрешить бизнесменам регистрировать в так называемых русских офшорах - специальных административных районах (САР) в Калининграде и Владивостоке - личные фонды и трасты.

Минэнерго включило в правила для субсидий на зарядные станции медленную зарядку и четыре выхода для электромобилей Статьи редакции

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

Российско-швейцарская WayRay представила свой первый прототип электромобиля с AR-остеклением Статьи редакции

За четыре года стартап хочет подготовиться к серийному производству и получить разрешения на движение по дорогам общего пользования.

WayRay Holograktor WayRay
null