Как написать парсер для wildberries

import requests import json import pandas as pd from tqdm import tqdm «»» Парсер wildberries по ссылке на каталог (указывать без фильтров) Парсер не идеален, есть множество вариантов реализации, со своими идеями и предложениями обязательно пишите мне, либо в группу, ссылка ниже. Подробное описание парсера Вайлдберриз можно почитать на сайте: https://happypython.ru/2022/07/21/парсер-wildberries/ Ссылка на статью ВКонтакте: https://vk.com/@happython-parser-wildberries По всем возникшим вопросам, можете писать в группу https://vk.com/happython парсер wildberries по каталогам 2022, обновлен 19.10.2022 — на данное число работает исправно «»» def get_catalogs_wb(target): «»»получение каталога вб»»» url = ‘https://www.wildberries.ru/webapi/menu/main-menu-ru-ru.json’ headers = {‘Accept’: «*/*», ‘User-Agent’: «Mozilla/5.0 (Windows NT 10.0; Win64; x64)»} response = requests.get(url, headers=headers).json() with open(‘wb_catalogs_data.json’, ‘w’, encoding=‘UTF-8’) as file: json.dump(response, file, indent=2, ensure_ascii=False) print(f’Данные сохранены в wb_catalogs_data_sample.json’) data_list = [] for d in response: try: for child in d[‘childs’]: if target == child[‘url’]: data_list.append({ ‘category_name’: child[‘name’], ‘category_url’: child[‘url’], ‘shard’: child[‘shard’], ‘query’: child[‘query’]}) else: for sub_child in child[‘childs’]: data_list.append({ ‘category_name’: sub_child[‘name’], ‘category_url’: sub_child[‘url’], ‘shard’: sub_child[‘shard’], ‘query’: sub_child[‘query’]}) except: # print(f’не имеет дочерних каталогов *{d[«name»]}*’) continue return data_list def search_category_in_catalog(target, catalog_list): «»»пишем проверку пользовательской ссылки на наличии в каталоге»»» try: for catalog in catalog_list: if catalog[‘category_url’] == target: print(f’найдено совпадение: {catalog[«category_name»]}) name_category = catalog[‘category_name’] shard = catalog[‘shard’] query = catalog[‘query’] return name_category, shard, query else: # print(‘нет совпадения’) pass except: print(‘Данный раздел не найден!’) def get_data_from_json(json_file): «»»извлекаем из json интересующие нас данные»»» data_list = [] for data in json_file[‘data’][‘products’]: try: price = int(data[«priceU»] / 100) except: price = 0 data_list.append({ ‘Наименование’: data[‘name’], ‘id’: data[‘id’], ‘Скидка’: data[‘sale’], ‘Цена’: price, ‘Цена со скидкой’: int(data[«salePriceU»] / 100), ‘Бренд’: data[‘brand’], ‘id бренда’: int(data[‘brandId’]), ‘feedbacks’: data[‘feedbacks’], ‘rating’: data[‘rating’], ‘Ссылка’: f’https://www.wildberries.ru/catalog/{data[«id»]}/detail.aspx?targetUrl=BP’ }) return data_list def get_content(shard, query, low_price=None, top_price=None): # вставляем ценовые рамки для уменьшения выдачи, вилбериес отдает только 100 страниц headers = {‘Accept’: «*/*», ‘User-Agent’: «Mozilla/5.0 (Windows NT 10.0; Win64; x64)»} data_list = [] for page in tqdm(range(1, 101)): # url = f’https://wbxcatalog-ru.wildberries.ru/{shard}’ # f’/catalog?appType=1&curr=rub&dest=-1029256,-102269,-1278703,-1255563′ # f’&{query}&lang=ru&locale=ru&sort=sale&page={page}’ # f’&priceU={low_price * 100};{top_price * 100}’ url = f’https://catalog.wb.ru/catalog/{shard}/catalog?appType=1&curr=rub&dest=-1075831,-77677,-398551,12358499′ f’&locale=ru&page={page}&priceU={low_price * 100};{top_price * 100} f’&reg=0&regions=64,83,4,38,80,33,70,82,86,30,69,1,48,22,66,31,40&sort=popular&spp=0&{query} data = requests.get(url, headers=headers).json() if len(get_data_from_json(data)) > 0: data_list.extend(get_data_from_json(data)) else: print(f’Сбор данных завершен.’) break return data_list def save_excel(data, filename): «»»сохранение результата в excel файл»»» df = pd.DataFrame(data) writer = pd.ExcelWriter(f’{filename}.xlsx’) df.to_excel(writer, ‘data’) writer.save() print(f’Все сохранено в {filename}.xlsx’) def parser(url, low_price, top_price): # получаем список каталогов target = url.split(‘https://www.wildberries.ru’)[1] catalog_list = get_catalogs_wb(target) try: # поиск введенной категории в общем каталоге name_category, shard, query = search_category_in_catalog(target, catalog_list=catalog_list) # сбор данных в найденном каталоге data_list = get_content(shard=shard, query=query, low_price=low_price, top_price=top_price) # сохранение найденных данных save_excel(data_list, f’{name_category}_from_{low_price}_to_{top_price}) except TypeError: print(‘Ошибка! Возможно не верно указан раздел. Удалите все доп фильтры с ссылки’) except PermissionError: print(‘Ошибка! Вы забыли закрыть созданный ранее excel файл. Закройте и повторите попытку’) if __name__ == ‘__main__’: «»»ссылку на каталог или подкаталог, указывать без фильтров (без ценовых, сортировки и тд.)»»» # url = input(‘Введите ссылку на категорию для сбора: ‘) # low_price = int(input(‘Введите минимальную сумму товара: ‘)) # top_price = int(input(‘Введите максимульную сумму товара: ‘)) «»»данные для теста. собераем товар с раздела велосипеды в ценовой категории от 50тыс, до 100тыс»»» url = ‘https://www.wildberries.ru/catalog/sport/vidy-sporta/velosport/velosipedy’ low_price = 5000 top_price = 100000 parser(url, low_price, top_price)

Задача: 

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

Описание: 

Перед запуском парсера wildberries, нужно на вкладке в настройках парсера указать, какие разделы сайта нужно обработать.

Исходными данными могут являться:

  • ссылки на разделы / подразделы сайта
  • ссылки на бренды
  • поисковые фразы

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

Инструкции по настройке параметров парсера WB для типовых задач:

  • выгрузка всех товаров из раздела / поискововой выдачи
  • анализ позиций товаров в каталоге сайта
  • парсер отзывов на товары wildberries

Парсер выводит в Excel всю доступную информацию о товарах, в том числе ту, которая не отображается на страницах сайта (например, остатки товаров по складам)

Ознакомьтесь с полным перечнем выводимых на лист столбцов
(пример результата можно увидеть на скриншоте под заголовком статьи, и также в прикреплённом файле Excel)

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

Есть возможность скачивать изображения товара в папку под именами вида 7899936-1.jpg (Артикул-НомерФото.jpg).
По умолчанию, скачивание изображений отключено. Включить можно установкой галочки Выполнять загрузку файлов в настройках парсера на вкладке 


К статье прикреплен тестовый файл настроек парсера WB (в начале статьи, под скриншотом)

Обязательно скачайте и протестируйте парсер перед покупкой!
(инструкция по добавлению файла настроек в программу-парсер)

Стоимость готового решения (6300 руб) включает в себя:
стоимость настройки под WB 3000 рублей
плюс
стоимость программы-парсера 3300 рублей

При покупке этого парсера, вы получаете аналогичный файл настроек, только без затирания части данных словом «test».
Вам останется только заменить файл настроек в папке Настройки парсеров.

Чтобы купить, оплачиваете (после тестирования парсера!) указанную выше стоимость удобным вам способом, и потом пишете на почту или в скайп, куда когда сколько и за что оплатили

Смотрите также аналогичные парсеры для сайтов ozon и lamoda

Доброй ночи друзья, решил написать небольшой парсер wildberries, но столкнулся с такой проблемой,у wb клиент рендеринг, подскажите пожалуйста, как можно парсить такие типы сайтов, без использования Selenium?

задан 11 авг 2022 в 21:57

borocko's user avatar

1

Когда ты переходишь на страницу товара, например, то выполняется запрос на сервер для получения информации о товаре. Ты можешь открыть консоль в браузере, раздел network и посмотреть, куда отправляется запрос и какие данные ты получаешь о товаре. Тогда не придется использовать selenium или парсить сайт. Ты сможешь получить просто json товара.

ответ дан 12 авг 2022 в 15:47

Danil Apsadikov's user avatar

Danil ApsadikovDanil Apsadikov

1,3422 золотых знака9 серебряных знаков23 бронзовых знака

1

Понравилась статья? Поделить с друзьями:
  • Как написать пароль на питоне
  • Как написать пароль на латинице
  • Как написать пароль на компьютере
  • Как написать пароль на английском языке на ноутбуке
  • Как написать пароль на английской раскладке русскими буквами на телефоне