Настроить Scrapy для парсинга сайта
123 PLNСайт - wildberries.
После того как вы все настроили и собрали у себя на сервере, вы можете либо прислать архив или передать в формате образа виртуальной машины. Код должен быть полным и не обфусцирован, содержат в себе краткое описание как его запустить (список зависимостей, например) и работать с ним, запускаться и работать без ошибок и позволять парсить в автоматическом режиме раз в 24ч определенную в конфиге товарную категорию.
Чтобы не начинать с нуля, лучшее решение взять уже имеющиеся наработки других людей. Поэтому предварительно собраны такие решения.
https://github.com/wondersell/wildsearch_crawler
https://github.com/max-miksher/WildberriesParser
https://github.com/Philipp26/wildberries_scrapy
https://github.com/VivaSaravian/ScrapyTest
https://github.com/berenzorn/wildberries
https://github.com/4heck/monitoring
https://github.com/qbcir/wildberries
Механизм работы (по сути отдельные модули ПО):
1. Парсим все имеющиеся категории товаров с сайта (каталог). Сохраняем в бд
Таблица "catalog"
name - имя на русском
id - номер категории (наш номер), сквозной, инкрементируется в базе и является уникальным, начинается с 1)
upper_id - номер верхней категории - родителя (id, для верхней категории - 0)
link - ссылка
date_add - дата добавления (как только обнаружена)
newid - поле. которое устанавливается вручную, и необходимо чтобы если категория удалена, то указывать на новую категорию куда переедут товары.
marketplace - (0-ozon; 1 - wildberries)
recheck_date - последняя дата, когда категория была перепроверена.
recheck_newname - новое русское имя.
recheck_found - найден ли при перепроверка (true/false)
Парсер должен найти все категории и записать в базу. При повторном запуске, он находит категорию, сравнивает с уже имеющимися данными и если ничего не изменилось, то просто записывает текущее время и дату в recheck_date, если изменилось то пишет новое имя в recheck_newname
сравнение идет по URL.
Исходник, который умеет парсить, только в БД не пишет, и мусор некоторый выдает иногда https://github.com/wondersell/wildsearch_crawler/blob/master/wildsearch_crawler/spiders/wildberries_categories_spider.py
2. Парсим товары в категории.
Работает в 2 режимах: 1. собрать все товары и их данные на основе категории (передаем параметр id из таблицы catalog, парсит в том числе и подчиненные категории) 2. обновить данные только по тем товарам которые есть в таблице items (передаем на вход: или категорию по id, или конкретные id товаров или он будет обрабатывать все подряд)
Устанавливаем категорию которую будем парсить, например в конфиге или через командую строку (указываем id) и начинаем парсинг.
Первоначально парсер должен определить количество товаров в категории для парсинга и поддерживать продолжение парсинга если вдруг он завис или был остановлен.
Так же должна быть реализована многопоточность парсинга на основе запуска парсеров для разных категорий, который должен уметь использовать список прокси.
Вот тоже скрипт умеет парсить: https://github.com/wondersell/wildsearch_crawler/blob/master/wildsearch_crawler/spiders/wildberries_spider.py
Внутри страницы есть JSON с нужными нам данными!! Если каких-то нет, то их можно получить на следующем шаге.
Саму страницу HTML можно не разбирать почти (кроме отзывов), как это в скрипте сделано. Так и проще выбирать вариации товара в одной карточке товара, они по факту - разные артикулы и цена может быть разная.
Собираемые данные в таблицу "items"
id - номер категории (наш номер), сквозной, инкрементируется в базе и является уникальным, начинается с 1)
category_id - номер категории
art - Код товара \ артикул
marketplace - (0-ozon; 1 - wildberries)
seller - продавец (актуально для озона)
url - ссылка на товар
img_url - ссылка на фото
date_add - дата добавления (как только обнаружена)
newid - поле. которое устанавливается вручную, и необходимо чтобы если товар был удален и добавлен заново, мы смогли установить соответствие. пустой
recheck_date - последняя дата, когда категория была перепроверена.
recheck_found - найден ли при перепроверке (true/false)
Таблицы для часто изменяющихся данных:
"cost" - цены
id - номер, сквозной, инкрементируется в базе и является уникальным, начинается с 1)
id_date - дата и время внесения в БД
items_id - id товара из таблицы "items"
cost - Цена
cost_new - Цена со скидкой
cost_discount - Применнные скидки
cost_discount2 - Применнные скидки
cost_discount3 - Применнные скидки
"stock" - наличие и продажи
id - номер, сквозной, инкрементируется в базе и является уникальным, начинается с 1)
id_date - дата и время
items_id - id товара из таблицы "items"
bought - Сколько раз купили
instock - Наличие
delivery - Срок доставки (дней от текущего), курьером
"reviews" - отзывы
id - номер, сквозной, инкрементируется в базе и является уникальным, начинается с 1)
id_date - дата и время
items_id - id товара из таблицы "items"
reviews - Количество отзывов
reviews_rate - Рейтинг (звезд\ бал)
3. Парсим количество товара на остатках
Должна быть возможность запуска по планировщику (типа cron) и либо должно парсить все товары из таблицы items или конкретные товары по id или категорию по id
Данные пишем в БД
Таблица "stock_stat" - остатки
id - номер, сквозной, инкрементируется в базе и является уникальным, начинается с 1
id_date - дата и время внесения в БД
items_id - id товара из таблицы "items"
stock_count - общее доступное количество
Чтобы узнать остатки, нужно сначала добавить товар в корзину через POST запрос к https://lk.wildberries.ru/product/addtobasket с уникальным номером корзины (он присваивается в cookies при заходе на страницу, даже без логина - прим. BasketUID=3e75e292-af11-464a-a2bc-4463585a69c3;) а затем перейти на страницу корзины в которой будет JSON в котором есть информаци и о цене и о складах и о доступном остатке.
Поэтому целесообразно добавлять в корзину по 50 товаров например, получить json, парсить, удалять товары из корзины и повторять.
Opinia zleceniodawcy o współpracy z Yevhen Bobyn
Настроить Scrapy для парсинга сайтаСделал быстро и был предельно внимателен. Высокий профессионализм. Рекомендую!
![]()
Opinia freelancera o współpracy z ze zleceniodawcą
Настроить Scrapy для парсинга сайтаБыло приятно сотрудничать. Понятное, хорошо проработанное, ТЗ. Буду рад еще делать проекты.
-
155 1 0 Интересная задача. Да и Вы уже пол пути прошли! Хочу участвовать в этом проекте )
Aktualne zlecenia dla freelancerów w kategorii Parsowanie danych
Parsowanie produktów, przygotowanie do importu na WPWydobyć pełny katalog tych stron: https://svit-mebliv.ua/ https://kompanit.com.ua/ru https://amia.com.ua/ https://mebliromax.com.ua/ https://pehotin.com.ua/catalog/ https://www.sokme.ua/ru/ Wszystkie produkty muszą być połączone w jedną wspólną tabelę do importu do WP. Każdy… Programowanie stron internetowych, Parsowanie danych ∙ 2 dni 3 godziny temu ∙ 54 oferty |
Szukam programisty do OpenCartDzień dobry 1) należy wdrożyć na stronie dneprkomfort.dp.uazakupiono moduł dla ukraińskich banków, już wdrożono Monto bank oto przykład naszego konkurenta Trzeba zrobić rozłożenie na raty, zakupy na raty (Monto Bank) Pumb, Sens, Monto domyślnie 2 płatności na 2 miesiące Pumb… Programowanie stron internetowych, Parsowanie danych ∙ 3 dni temu ∙ 48 ofert |
Wymagany specjalista ds. promocji w Telegramie.
107 PLN
Zadania: zapraszanie rzeczywistych użytkowników z bazy nazw użytkowników do nowych czatów oraz wysyłanie wiadomości do docelowej bazy. Interesuje nas tylko jakościowy ruch i praca z żywą publicznością — wykonawców korzystających z botów, sztucznego zwiększania lub niskiej… Parsowanie danych, Promocja w sieciach społecznościowych (SMM) ∙ 7 dni 3 godziny temu ∙ 9 ofert |
Konsultacja dotycząca parsowania subskrybentów kont InstagramWitam. Konieczne jest przeprowadzenie wstępnej oceny możliwości realizacji następującego zadania. Posiadam listę kont na Instagramie. Celem jest uzyskanie danych kontaktowych (w pierwszej kolejności adresów e-mail) użytkowników, którzy obserwują te konta. Wcześniej spotkałem… Parsowanie danych ∙ 10 dni 22 godziny temu ∙ 13 ofert |
Potrzebny specjalista do wyszukiwania kontaktów decydentów w UkrainieKonieczne jest zebranie bazy (lub gotowej bazy) kontaktów osób podejmujących decyzje (LPR) w firmach Ukrainy. Wyszukiwanie i zbieranie informacji, Parsowanie danych ∙ 11 dni 2 godziny temu ∙ 22 oferty |