Zoro предлагает более 12 миллионов товаров, инструментов, оборудования и промышленных принадлежностей. Zoro прост в использовании, это универсальный магазин для предприятий и частных лиц, которые ищут товары с подробными описаниями, ценами и наличием. С миллионами посетителей в месяц Zoro является крупным игроком на рынке промышленных поставок.
В этом блоге вы узнаете, как извлекать данные из Zoro с помощью Python и Crawlbase Crawling API. Ты выучишь:
Как извлечь результаты поиска Zoro.
Получите подробную информацию о продукте, такую как цены, наличие на складе и технические характеристики.
Обработка контента, отображаемого с помощью JavaScript, и разбиение на страницы.
Скрапинг Zoro может быть очень полезен для предприятий, исследователей и разработчиков. С таким количеством продуктов и такой детализацией Zoro является сокровищницей данных для анализа и исследования рынка. Вот почему:
1. Исследования рынка
Получайте информацию о продуктах, включая технические характеристики, цены и доступность, чтобы анализировать тенденции рынка и находить лучшие продукты в различных категориях.
2. Сравнение цен
Используйте данные Zoro для сравнения цен у конкурентов, чтобы принимать обоснованные решения о покупке или корректировать цены, чтобы оставаться конкурентоспособными.
3. Управление запасами
Отслеживайте наличие товара и его состояние на складе, чтобы оптимизировать ваши запасы и избежать дефицита или затоваривания.
4. Данные для проектов электронной коммерции
Собранные данные Zoro можно использовать для создания или улучшения платформ электронной коммерции, инструментов сравнения продуктов или систем управления каталогами.
5. Бизнес-аналитика
Отслеживайте потребительский спрос и популярность продукции, анализируя списки товаров и обзоры Zoro.
Ключевые данные для извлечения из Zoro
При скрапинге Zoro вам нужно извлечь правильные точки данных, чтобы получить значимые идеи. Вот на чем следует сосредоточиться:
Crawlbase Crawling API для Зоро Скрапинг
The Crawlbase Crawling API идеально подходит для парсинга веб-сайтов, созданных с помощью JavaScript, таких как Zoro. Он обрабатывает динамический контент, обходит меры по борьбе с парсингом и упрощает управление пагинацией.
Использовать Crawlbase, установите его библиотеку Python с помощью:
1
pip установить crawlbase
После регистрацией для Crawlbase, получите свой API-токен из панели управления. Этот токен требуется для всех запросов. Crawlbase предоставляет два типа токенов. Обычный токен для статических сайтов и токен JS для сайтов с JS-рендерингом. Для Zoro вам нужен токен JS. Crawlbase предлагает 1,000 бесплатных запросов для своего Crawling API для легкого старта.
Crawlbase Crawling API позволяет вам визуализировать JavaScript с помощью ajax_wait вариант и обрабатывать более медленную загрузку страниц с помощью page_wait. Есть много других вариантов, которые вы можете использовать с Crawlbase Crawling API; вы можете прочитать о них здесь.
# Извлечь страницу с помощью Crawlbase ответ = crawling_api.get(url, параметры)
if ответ["заголовки"]['статус_ПК'] == '200': html_content = ответ['тело'].decode('utf-8') Распечатать(«Данные успешно получены!») еще: Распечатать(«Не удалось получить данные».)
Эта конфигурация закладывает основу для создания скраперов для списков и страниц продуктов Zoro.
Подготовка к сбору данных Zoro
Прежде чем начать скрейпинг Zoro, вам нужно настроить свою среду с правильными инструментами и библиотеками. Это поможет вам шаг за шагом начать работу.
Необходимые инструменты и библиотеки
Для скрапинга Zoro вам понадобится:
Питон: Благодаря простоте использования и надежным библиотекам Python является одним из лучших языков для веб-скрапинга.
Crawlbase Библиотека Python: Это поможет вам сделать Crawlbase Crawling API звонки.
КрасивыйСуп: Библиотека Python для анализа HTML и извлечения из него данных.
Установка Python и необходимых библиотек
Если у вас не установлен Python, загрузите его здесь: python.org. После установки вы можете использовать pip для установки библиотек. Выполните следующие команды в терминале:
1 2
pip установить crawlbase Пип установить BeautifulSoup4
Эти библиотеки позволят вам взаимодействовать с Crawlbase Crawling API, анализировать HTML-контент из Zoro и эффективно обрабатывать запросы.
Как выбрать правильную IDE для веб-скрапинга
Для написания скрипта скрапинга вы можете использовать любую интегрированную среду разработки (IDE) или текстовый редактор. Вы можете выбрать между некоторыми популярными, такими как Код VS, PyCharm и Ноутбуки Jupyter.
Скрапинг списков поиска Zoro
Скрапинг списков поиска Zoro включает в себя определение ключевых точек данных, написание скрапера Python, обработку пагинации и сохранение данных в структурированном формате. Давайте разберем это шаг за шагом.
Проверка HTML для определения селекторов
Чтобы извлечь необходимые данные, проверьте HTML-структуру страницы результатов поиска Zoro:
Открыть страницу: Посетите страницу результатов поиска Zoro (например, по запросу «ящик для инструментов»).
Осмотрите элементы: Щелкните правой кнопкой мыши на странице и выберите «Проверить», чтобы открыть инструменты разработчика.
Найдите элементы: Используйте проводник DOM, чтобы найти селекторы CSS для:
Бренд:: Найдено внутри <span> тег с классом brand-name.
Название продукта: Найдено внутри <div> тег с классом product-title.
Цена: Найдено внутри <div> тег с классом price.
URL-адрес продукта: Найдено в href атрибут <a> тег, вложенный в
тег с классом product-title.
Изображение продукта: Найдено в src атрибут <img> тег с атрибутом данных data-za="product-image".
Написание скребка списков поиска
Использовать Crawlbase Crawling API для обработки рендеринга JavaScript. Вот скрапер Python:
возвращают данным еще: Распечатать(f"Не удалось загрузить страницу {номер_страницы}. Статус: {ответ["заголовки"]['статус_ПК']}") возвращают []
Обработка нумерации страниц
Зоро использует page параметр для пагинации. Вы можете перебирать страницы, пока не будет достигнуто заданное количество страниц, или автоматически останавливаться, когда на странице больше нет данных.
в то время какПравда: Распечатать(f"Очистка страницы {страница}... ") page_data = scrape_zoro_listings(страница)
# Разорвать цикл, если текущая страница не возвращает никаких данных if данные_страницы: Распечатать(«Больше данных не найдено. Останавливаю пагинацию».) перерыв
в то время какПравда: Распечатать(f"Очистка страницы {страница}... ") page_data = scrape_zoro_listings(базовый_url, страница)
# Разорвать цикл, если текущая страница не возвращает никаких данных if данные_страницы: Распечатать(«Больше данных не найдено. Останавливаю пагинацию».) перерыв
Этот скрапер эффективно извлекает данные из списков поиска Zoro, обрабатывает пагинацию и сохраняет результаты в структурированном файле JSON для дальнейшего анализа.
[ { "бренд":«Apex Tool Group», "заглавие":"Ящик для инструментов с 3 ящиками", "цена":"цена продукта: $149.99/шт.", "URL":"https://www.zoro.com/apex-tool-group-3-drawer-tool-box-83151/i/G6893443/", "url_изображения":"https://www.zoro.com/static/cms/product/prev/Комплексная сеть поставок LLC_KDT83151xx1200Wx1200Hxx305c78.jpg" }, { "бренд":«K-Tool International», "заглавие":"Ящик для инструментов, 10 ящиков, черный, 41 дюйм W", "цена":"цена продукта: $1,400.99/шт.", "URL":"https://www.zoro.com/k-tool-international-tool-box-10-drawer-black-41-in-w-kti75132/i/G406006122/", "url_изображения":"https://www.zoro.com/static/cms/product/prev/Комплексная сеть поставок LLC_KTI75132xxmediaxx01xx4b250d.jpeg" }, { "бренд":"Прото", "заглавие":"Универсальный ящик для инструментов с двойной защелкой и лотком, стальной, красный, 20" Ш x 8.5" Г x 9.5" В", "цена":"цена продукта: $51.99/шт.", "URL":"https://www.zoro.com/proto-general-purpose-double-latch-tool-box-with-tray-steel-red-20-w-x-85-d-x-95-h-j9975r/i/G0067825/", "url_изображения":"https://www.zoro.com/static/cms/product/prev/Z1o8_0mcpEx-.JPG" }, { "бренд":"Деволт", "заглавие":«Ящик для инструментов на колесиках, пластиковый, черный, 28 дюймов Ш x 12-1/2 дюймов Г x 12 дюймов В», "цена":"цена продукта: $43.19/шт.", "URL":"https://www.zoro.com/dewalt-rolling-tool-box-plastic-black-28-in-w-x-12-12-in-d-x-12-in-h-dwst28100/i/G3778857/", "url_изображения":"https://www.zoro.com/static/cms/product/prev/Z1wK0zqcpEx-.JPG" }, { "бренд":«Милуоки Тул», "заглавие":«Ящик для инструментов PACKOUT XL, ударопрочный, полимерный, черный/красный, 22 дюйма (Ш) x 16 дюймов (Г) x 19 дюймов (В)», "цена":"цена продукта: $119.00/шт.", "URL":"https://www.zoro.com/milwaukee-tool-packout-xl-tool-box-impact-resistant-polymer-blackred-22-in-w-x-16-in-d-x-19-in-h-48-22-8429/i/G001272021/", "url_изображения":"https://www.zoro.com/static/cms/product/prev/Z3pAyumcpEx_.JPG" }, .... более ]
Скрапинг страниц продуктов Zoro
Скрапинг страниц продуктов на Zoro позволяет извлекать подробную информацию об отдельных продуктах, такую как описания, характеристики и обзоры. Давайте разобьем этот раздел на практические шаги.
Понимание структуры страницы продукта
Для эффективного извлечения данных используйте инструменты разработчика браузера, чтобы проверить ключевые элементы и определить их уникальные селекторы CSS.
Ключевые элементы, на которые следует обратить внимание:
Название продукта: <h1> пометить с data-za="product-name".
Цена: <div> пометить с data-za="product-price".
Описание товара:: <div> с классом product-description, вложенный <div> с классом description-text.
Характеристики: Ряды в <table> одной <div class="product-details-info">с двумя <td> элементов в строке.
изображения продуктов: <img> теги в <div class="product-images">, с классом product-image.
Извлечение ключевых данных из продуктов
Ниже представлена функция Python для извлечения данных со страницы продукта:
от база сканирования Импортировать CrawlingAPI от bs4 Импортировать КрасивыйСуп Импортировать re
# Инициализация Crawlbase API crawling_api = CrawlingAPI({токен: 'CRAWLBASE_JS_TOKEN'})
# Функция для извлечения данных со страницы продукта защитуочистить_страницу_продукта(URL-адрес_продукта): варианты = { 'ajax_wait': 'правда', 'page_wait': '5000', } ответ = crawling_api.get(product_url, параметры)
if ответ["заголовки"]['статус_ПК'] == '200': суп = КрасивыйСуп(ответ['тело'], 'html.парсер')
заголовок = {re.sub(г'\с+', '', суп.выберите_один('h1[data-za="название-продукта"]').текст.полоска())} if суп.выберите_один('h1[data-za="название-продукта"]') еще'' цена = суп.выберите_один('div[data-za="product-price"] span.currency').текст.полоска() if суп.выберите_один('div[data-za="product-price"] span.currency') еще'' описание = re.sub(г'\с+', '', суп.выберите_один('div.product-description div.description-text').текст.полоска()) if суп.выберите_один('div.product-description div.description-text') еще'' спецификации = {re.sub(г'\с+', '', строка.найти_все('тд')[0].text.strip()): re.sub(г'\с+', '',строка.найти_все('тд')[1].текст.полоска()) для строка in суп.выбрать('div.product-details-info table tr') ifтолько(строка.найти_все('тд')) == 2} image_urls = [img['источник'] для IMG in суп.выбрать('div.product-images img.product-image') if'источник'in img.attrs]
Сохраните извлеченные данные о продукте в файле JSON для дальнейшего использования:
1 2 3 4 5 6
Импортировать JSON
защитусохранить_данные_о_продукте(данные, имя файла='zoro_products.json'): открытый(имя файла, 'w') as f: json.dump(данные, f, отступ=4) Распечатать(f"Данные о продукте сохранены в {имя файла}")
Полный пример кода
Вот полный код для сбора данных с нескольких страниц товаров и сохранения данных в файле JSON:
защитусохранить_данные_о_продукте(данные, имя файла='zoro_products.json'): открытый(имя файла, 'w') as f: json.dump(данные, f, отступ=4) Распечатать(f"Данные о продукте сохранены в {имя файла}")
Этот скрипт извлечет данные о продуктах из нескольких страниц продуктов Zoro, извлечет соответствующую информацию и сохранит ее в структурированном файле JSON.
[ { "заглавие":"Ящик для инструментов с 3 ящиками", "цена":"$", "описание":"Ящик для инструментов с 3 ящиками", "спецификации":{ "Элемент":«Ящик для инструментов», "Цвет":«Черный», "Особенности":"3-ящика", "Включает":«Три ящика» }, "image_urls":[ "https://www.zoro.com/static/cms/product/large/Integrated%20Supply%20Network%20LLC_KDT83151xx1200Wx1200Hxx305c78.jpg" ], "URL":"https://www.zoro.com/apex-tool-group-3-drawer-tool-box-83151/i/G6893443/" }, { "заглавие":"Ящик для инструментов, 10 ящиков, черный, 41 дюйм W", "цена":"$", "описание":«Общая грузоподъемность 1000 фунтов; 10 ящиков с направляющими на роликовых подшипниках, двухсекционный ящик для инструментов; Анодированные алюминиевые ручки ящиков; Толкатель; Встроенный удлинитель UL; Комплект из 10 вкладышей EVA; 5 поворотных колес «x 2», 2 шт. с тормозом, черные кронштейны, черные колеса; Прочное порошковое покрытие; Полностью собран», "спецификации":{ "Ширина":"41 в", "Элемент":«Ящик для инструментов», «Количество ящиков»:"10", "Цвет":«Черный», "Включает":"41\" Премиум 10 ящиков, двойной отсек, ящик для инструментов, 1,000 фунтов (матовый черный)", "Особенности":"Двойной залив" }, "image_urls":[ "https://www.zoro.com/static/cms/product/large/Integrated%20Supply%20Network%20LLC_KTI75132xxmediaxx01xx4b250d.jpeg" ], "URL":"https://www.zoro.com/k-tool-international-tool-box-10-drawer-black-41-in-w-kti75132/i/G406006122/" }, { "заглавие":"Универсальный ящик для инструментов с двойной защелкой и лотком, стальной, красный, 20" Ш x 8.5" Г x 9.5" В", "цена":"$", "описание":"PROTO - J9975R - это прочный ящик для инструментов, изготовленный из стали, предназначенный для обеспечения безопасного и организованного хранения ваших инструментов. Этот отдельный ящик для инструментов предлагает большую емкость для хранения 2,133 кубических дюйма, что позволяет вам разместить различные инструменты и строительные материалы. Ящик для инструментов оснащен запирающейся системой с навесным замком для дополнительной защиты от несанкционированного доступа. Он оснащен складной верхней ручкой, которая облегчает переноску и доступ. Основные характеристики:\u2022 Изготовлен из прочного стального материала, что увеличивает его долговечность.\u2022 Предлагает достаточно места для хранения с впечатляющей емкостью 2,133 кубических дюйма.\u2022 Оснащен двумя отделениями для лучшей организации ваших инструментов.\u2022 Имеет съемный стальной лоток для хранения, что повышает его удобство и простоту использования.\u2022 Разработан со складной верхней ручкой для удобства переноски и доступа к ящику для инструментов.\u2022 Включает один съемный лоток для хранения, обеспечивая гибкость в размещении хранения.", "спецификации":{ "Ширина":"20 в", "Глубина":"8-1/2 дюйма", "Высота":"9-1/2 дюйма", "Общая ширина":"20 в", «Общая глубина»:"8 1/2 дюйма", "Внутренняя ширина":"19 3/4 дюйма", «Номинальная наружная ширина»:"20 в", «Внутренняя высота»:"9 1/4 дюйма", «Номинальная наружная высота»:"9 в", "Общая высота":"9 1/2 дюйма", «Номинальная наружная глубина»:"8 в", «Внутренняя глубина»:"8 1/4 дюйма", "Внутренние размеры":"19 3/4 дюйма Ш x 8 1/4 дюйма Г x 9 1/4 дюйма В", «Внутренняя глубина»:"8 1/4 дюйма", «Внутренняя высота»:"9 1/4 дюйма", "Внутренняя ширина":"19 3/4 дюйма", "Элемент":«Ящик для инструментов», «Материал»:"Сталь", "Цвет":«Красный», "Особенности":«Съемный стальной поднос», "Включает":«Съемный лоток для покупок», "Тип ручки":«Складная верхняя ручка», «Дизайн ручки»:«Складной верх», «Емкость хранилища»:"2,133 куб. дюймов", «Количество частей»:"1", «Группировка продуктов портативных ящиков для инструментов»:«Переносные ящики для инструментов», "Направляющие для ящиков":"Никто", «Количество ящиков»:"0", «Система блокировки»:"Замок", «Количество лотков»:"1", "Весовая емкость":"40 фунтов", «Количество ручек»:"1", «Основной материал для ящика для инструментов»:"Сталь", «Основной цвет ящика для инструментов»:«Красный», "Конец":"Порошковое покрытие", «Количество отсеков»:"2", «Внешний материал»:"Сталь", «Тип закрытия»:"Защелка", "Штабелируемый":«Не штабелируется», "Отделка кузова":"Порошковое покрытие", «Измеритель тела»:"14 га", «Количество ключей в комплекте»:"0", «Конфигурация»:«Индивидуальный ящик для инструментов», "Стиль рукоятки":"Металл", «Включает ключи»:«Ключи в комплект не входят», «Общая грузоподъемность»:"40 фунтов", «Грузоподъемность на ящик»:"10 фунтов", «Включает ящики»:«Ящики в комплект не входят», «Количество коробок»:"1", "Включает ролики":«Ролики в комплект не входят», «Общая емкость хранилища»:"2,133 куб. дюймов", «Количество делителей»:"1" }, "image_urls":[ "https://www.zoro.com/static/cms/product/large/Z1o8_0mcpEx-.JPG", "https://www.zoro.com/static/cms/product/full/Z1o8_0mcpEx_.JPG" ], "URL":"https://www.zoro.com/proto-general-purpose-double-latch-tool-box-with-tray-steel-red-20-w-x-85-d-x-95-h-j9975r/i/G0067825/" } ]
Заключение
Сбор данных с веб-сайта Zoro.com может полностью изменить ситуацию для компаний, исследователей и разработчиков, которые хотят анализировать тенденции в продуктах, сравнивать цены или создавать инструменты автоматизации инвентаризации. Использование современных инструментов, таких как Crawlbase Crawling API упрощает обработку контента, отрисованного с помощью JavaScript, и разбивку на страницы.
Следуйте инструкциям в этом посте, и вы сможете извлекать данные из списков поиска и страниц продуктов Zoro и сохранять результаты в структурированном формате, например JSON. Всегда используйте эти данные ответственно и соблюдайте условия обслуживания веб-сайта.
Если вы хотите извлекать данные с других платформ электронной коммерции, ознакомьтесь с этими руководствами.
Обратитесь к нашему поддержка если у вас есть вопросы. Счастливого скрапинга!
Часто задаваемые вопросы (FAQ):
В. Законно ли извлекать данные с веб-сайта Zoro?
Веб-скрапинг, как правило, является законным, если он выполняется в этических целях и в рамках условий обслуживания Zoro. Всегда проверяйте их политику и не скрапингуйте конфиденциальные или ограниченные данные.
В. Какие инструменты мне понадобятся для эффективного парсинга Zoro?
Для парсинга Zoro вам понадобится Python, BeautifulSoup для парсинга HTML и Crawlbase Crawling API для обработки контента, визуализируемого с помощью JavaScript, и пагинации.
В. Как я могу сохранить извлеченные данные для будущего использования?
Собранные данные можно сохранить в форматах JSON, CSV или в базе данных, в зависимости от вашего проекта. JSON лучше всего подходит для структурированных данных и легко интегрируется с другими приложениями.
Хассан Рехан
Хассан Рехан — инженер-программист в Crawlbase с более чем 5-летним опытом создания масштабируемых веб-приложений, специализируясь на Java, Python и JavaScript. Он имеет большой опыт в веб-скрапинге и разработал несколько первоклассных расширений Chrome. Как ведущий технический писатель в Crawlbase, он создает технический контент и проводит вебинары. Ранее он сотрудничал с ведущими компаниями, включая Mentor Graphics (Siemens), Etisalat UAE и Systems Limited.