Zoro propose plus de 12 millions de produits, outils, équipements et fournitures industrielles. Zoro est facile à utiliser, un guichet unique pour les entreprises et les particuliers à la recherche de produits avec des descriptions détaillées, des prix et une disponibilité. Avec des millions de visiteurs par mois, Zoro est un acteur majeur du marché des fournitures industrielles.

Ce blog vous montrera comment extraire des données de Zoro à l'aide de Python et du Base d'exploration Crawling API. Tu vas apprendre:

  • Comment extraire les résultats de recherche Zoro.
  • Obtenez des détails sur le produit tels que le prix, l'état des stocks et les spécifications.
  • Gérer le contenu rendu par JavaScript et la pagination.

Commençons!

Table des matières

  1. Pourquoi extraire des données de Zoro ?
  2. Données clés à extraire de Zoro
  3. Base d'exploration Crawling API pour Zoro Scraping
  4. Préparation au scraping de données Zoro
  • Outils et bibliothèques nécessaires
  • Installation et configuration de Crawlbase
  1. Suppression des listes de recherche Zoro
  • Inspection du code HTML pour identifier les sélecteurs
  • Rédaction du scraper de listes de recherche
  • Gestion de la pagination avec le paramètre « page »
  • Stockage des données récupérées dans un fichier JSON
  • Exemple de code complet
  1. Récupération des pages de produits Zoro
  • Comprendre la structure de la page produit
  • Extraction des détails clés des produits
  • Stockage des données produit dans un fichier JSON
  • Exemple de code complet
  1. Réflexions finales
  2. Foire Aux Questions (FAQ)

Pourquoi extraire des données de Zoro ?

L'extraction de données Zoro peut être très utile pour les entreprises, les chercheurs et les développeurs. Avec autant de produits et autant de détails, Zoro est une mine d'or de données pour l'analyse et les études de marché. Voici pourquoi :

1. Étude de marché

Obtenez des informations sur les produits, y compris les spécifications, les prix et la disponibilité, pour analyser les tendances du marché et trouver les meilleurs produits dans différentes catégories.

2. Comparaison des prix

Utilisez les données Zoro pour comparer les prix des concurrents afin de prendre des décisions d'achat éclairées ou d'ajuster vos prix pour rester compétitif.

3. Gestion de l'inventaire

Suivez la disponibilité des produits et l'état des stocks pour optimiser votre inventaire et éviter les ruptures de stock ou les surstocks.

4. Données pour les projets de commerce électronique

Les données extraites de Zoro peuvent être utilisées pour créer ou améliorer des plateformes de commerce électronique, des outils de comparaison de produits ou des systèmes de gestion de catalogue.

5. Intelligence économique

Consultez la demande des clients et la popularité des produits en analysant les listes et les avis sur les produits de Zoro.

Données clés à extraire de Zoro

Lorsque vous récupérez Zoro, vous devez extraire les bons points de données pour obtenir des informations utiles. Voici ce sur quoi vous devez vous concentrer :

Une image des points de données clés à extraire de Zoro

Base d'exploration Crawling API pour Zoro Scraping

Le Base d'exploration Crawling API est parfait pour scraper des sites Web rendus par JavaScript comme Zoro. Il gère le contenu dynamique, contourne les mesures anti-scraping et simplifie la gestion de la pagination.

Pour utiliser Crawlbase, installez sa bibliothèque Python en utilisant :

1
pip installe crawlbase

Après signer pour Crawlbase, récupérez votre jeton API à partir du tableau de bord. Ce jeton est requis pour toutes les requêtes. Crawlbase fournit deux types de jetons. Un jeton normal pour les sites statiques et un jeton JS pour les sites rendus en JS. Pour Zoro, vous avez besoin d'un jeton JS. Crawlbase offre 1,000 XNUMX requêtes gratuites pour ses Crawling API pour un démarrage facile.

Base d'exploration Crawling API vous permet de rendre JavaScript avec le ajax_wait option et gérer les chargements de page plus lents à l'aide page_waitIl existe de nombreuses autres options que vous pouvez utiliser avec Crawlbase Crawling API; vous pouvez en lire plus à leur sujet ici.

Voici comment récupérer une page de recherche Zoro :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
de base d'exploration importer API d'exploration

# Initialiser l'API Crawlbase
crawling_api = API d'exploration({'jeton': 'VOTRE_JETON_API_CRAWLBASE'})

# Définir les paramètres
choix = {
'ajax_wait': 'vrai', # Assurer le chargement du contenu JavaScript
'page_wait': «2000 ', # Attendez 2 secondes pour les pages lentes
}

# URL de la page de recherche de Zoro
URL = "https://www.zoro.com/search?q=tools&page=1"

# Récupérer la page avec Crawlbase
réponse = crawling_api.get(url, options)

if réponse['en-têtes']['pc_status']== «200 ':
html_content = réponse['corps'].décoder(« utf-8 »)
impression(« Données récupérées avec succès ! »)
d'autre:
impression(« Échec de la récupération des données. »)

Cette configuration définit le terrain pour la création de scrapers pour les listes et les pages de produits de Zoro.

Préparation au scraping de données Zoro

Avant de commencer à scraper Zoro, vous devez configurer votre environnement avec les bons outils et bibliothèques. Cela vous guidera étape par étape pour vous aider à démarrer.

Outils et bibliothèques nécessaires

Pour gratter Zoro, vous aurez besoin de :

  1. Python:En raison de sa facilité d’utilisation et de ses bibliothèques robustes, Python est l’un des meilleurs langages pour le scraping Web.
  2. Bibliothèque Python Crawlbase:Cela vous aidera à créer Crawlbase Crawling API appels.
  3. BeautifulSoup:Une bibliothèque Python pour analyser le HTML et en extraire des données.

Installation de Python et bibliothèques requises

Si vous n'avez pas installé Python, téléchargez-le ici : python.org. Une fois installées, vous pouvez utiliser pip pour installer les bibliothèques. Exécutez les commandes suivantes dans votre terminal :

1
2
pip installe crawlbase
pip installer beautifulsoup4

Ces bibliothèques vous permettront d'interagir avec Crawlbase Crawling API, analyser le contenu HTML de Zoro et gérer efficacement les requêtes.

Comment choisir le bon IDE pour le scraping Web

Pour écrire votre script de scraping, vous pouvez utiliser n'importe quel environnement de développement intégré (IDE) ou éditeur de texte. Vous pouvez choisir parmi certains des plus populaires, comme Code VS, PyCharm et Carnets de Jupyter.

Suppression des listes de recherche Zoro

L'extraction des listes de recherche Zoro implique l'identification des points de données clés, l'écriture d'un scraper Python, la gestion de la pagination et le stockage des données dans un format structuré. Décomposons cela étape par étape.

Inspection du code HTML pour identifier les sélecteurs

Pour extraire les données requises, inspectez la structure HTML de la page de résultats de recherche de Zoro :

  1. Ouvrir la page:Visitez une page de résultats de recherche Zoro (par exemple, pour « boîte à outils »).
  2. Inspecter les éléments: Cliquez avec le bouton droit sur la page et sélectionnez Inspecter pour ouvrir les outils de développement.
Capture d'écran de la structure d'inspection HTML des listes de recherche Zoro
  1. Localiser les éléments:Utilisez l'explorateur DOM pour trouver les sélecteurs CSS pour :
  • Marque:Trouvé à l'intérieur d'un <span> tag avec la classe brand-name.
  • Titre du produit:Trouvé à l'intérieur d'un <div> tag avec la classe product-title.
  • Prix:Trouvé à l'intérieur d'un <div> tag avec la classe price.
  • URL du produit: Trouvé dans le href attribut d'un <a> balise imbriquée dans un
    tag avec la classe product-title.
  • Image du produit: Trouvé dans le src attribut d'un <img> balise avec l'attribut data data-za="product-image".

Rédaction du scraper de listes de recherche

Utilisez Crawlbase Crawling API pour gérer le rendu JavaScript. Voici le scraper Python :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
de base d'exploration importer API d'exploration
de bs4 importer BeautifulSoup
importer json

# Initialiser l'API Crawlbase
crawling_api = API d'exploration({'jeton': 'VOTRE_JETON_CRAWLBASE'})

# Fonction permettant de récupérer les listes de recherche
def scrape_zoro_listings(base_url, numéro_page):
base_url = f"{base_url}&page={numéro_de_page}"
choix = {
'ajax_wait': 'vrai', # Assurer le chargement du contenu JavaScript
'page_wait': «5000 ', # Attendez 5 secondes pour les pages lentes
}
réponse = crawling_api.get(base_url, options)

if réponse['en-têtes']['pc_status']== «200 ':
soupe = BeautifulSoup(réponse['corps'], 'html.parser')
données = []

produits = soup.select('section[data-za="liste-de-fiches-de-produits"] > div.search-fiche-de-produits')
pour produits in produits:
marque = produit.select_one('span.marque-nom').texte.strip() if produit.select_one('span.marque-nom') d'autre ''
titre = produit.select_one('div.titre-du-produit').texte.strip() if produit.select_one('div.titre-du-produit') d'autre ''
prix = produit.select_one('div.prix').texte.strip() if produit.select_one('div.prix') d'autre ''
url = produit.select_one('div.titre-du-produit a')['href'] if produit.select_one('div.titre-du-produit a') d'autre ''
image_url = produit.select_one('img[data-za="image-produit"]')['src'] if produit.select_one('img[data-za="image-produit"]') d'autre ''

données.append({
'marque': marque,
'Titre': titre,
'prix': prix,
'URL': f"https://www.zoro.com{URL}",
'image_url': image_url
})

retourner données,
d'autre:
impression(f"Échec de la récupération de la page {numéro_de_page}. Statut: {réponse['en-têtes']['pc_status']}")
retourner []

Gestion de la pagination

Zoro utilise le page paramètre de pagination. Vous pouvez parcourir les pages jusqu'à ce qu'un nombre défini de pages soit atteint ou vous arrêter automatiquement lorsqu'aucune donnée supplémentaire n'est trouvée sur une page.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def gratter_toutes_les_pages(max_pages=Aucun):
toutes_données = []
page = 1

tout en Vrai:
impression(f"Scraping de la page {page}... ")
page_data = scrape_zoro_listings(page)

# Rompre la boucle si aucune donnée n'est renvoyée par la page actuelle
if pas page_data:
impression(« Aucune autre donnée trouvée. Arrêt de la pagination. »)
pause

toutes_données.extend(données_de_page)
page += 1

# Arrêter si la limite maximale de pages est atteinte
if max_pages et page > max_pages:
impression(f"A atteint la limite maximale de {max_pages} "pages.")
pause

retourner toutes_les_données

Stockage des données récupérées dans un fichier JSON

Enregistrez les données collectées dans un fichier JSON pour un accès facile :

1
2
3
4
def enregistrer_dans_json(données, nom de fichier='zoro_listings.json'):
avec ouvert(nom de fichier, 'w') as f:
json.dump(données, f, indent=4)
impression(f"Données enregistrées dans {nom de fichier}")

Exemple de code complet

Voici le script complet combinant toutes les étapes :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
de base d'exploration importer API d'exploration
de bs4 importer BeautifulSoup
importer json

crawling_api = API d'exploration({'jeton': 'CRAWLBASE_JS_TOKEN'})

def scrape_zoro_listings(base_url, numéro_page):
base_url = f"{base_url}&page={numéro_de_page}"
choix = {
'ajax_wait': 'vrai', # Assurer le chargement du contenu JavaScript
'page_wait': «5000 ', # Attendez 5 secondes pour les pages lentes
}
réponse = crawling_api.get(base_url, options)

if réponse['en-têtes']['pc_status']== «200 ':
soupe = BeautifulSoup(réponse['corps'], 'html.parser')
données = []

produits = soup.select('section[data-za="liste-de-fiches-de-produits"] > div.search-fiche-de-produits')
pour produits in produits:
marque = produit.select_one('span.marque-nom').texte.strip() if produit.select_one('span.marque-nom') d'autre ''
titre = produit.select_one('div.titre-du-produit').texte.strip() if produit.select_one('div.titre-du-produit') d'autre ''
prix = produit.select_one('div.prix').texte.strip() if produit.select_one('div.prix') d'autre ''
url = produit.select_one('div.titre-du-produit a')['href'] if produit.select_one('div.titre-du-produit a') d'autre ''
image_url = produit.select_one('img[data-za="image-produit"]')['src'] if produit.select_one('img[data-za="image-produit"]') d'autre ''

données.append({
'marque': marque,
'Titre': titre,
'prix': prix,
'URL': f"https://www.zoro.com{URL}",
'image_url': image_url
})

retourner données,
d'autre:
impression(f"Échec de la récupération de la page {numéro_de_page}. Statut: {réponse['en-têtes']['pc_status']}")
retourner []

def gratter_toutes_les_pages(base_url, max_pages=Aucun):
toutes_données = []
page = 1

tout en Vrai:
impression(f"Scraping de la page {page}... ")
page_data = scrape_zoro_listings(base_url, page)

# Rompre la boucle si aucune donnée n'est renvoyée par la page actuelle
if pas page_data:
impression(« Aucune autre donnée trouvée. Arrêt de la pagination. »)
pause

toutes_données.extend(données_de_page)
page += 1

# Arrêter si la limite maximale de pages est atteinte
if max_pages et page > max_pages:
impression(f"A atteint la limite maximale de {max_pages} "pages.")
pause

retourner toutes_les_données

def enregistrer_dans_json(données, nom de fichier='zoro_listings.json'):
avec ouvert(nom de fichier, 'w') as f:
json.dump(données, f, indent=4)
impression(f"Données enregistrées dans {nom de fichier}")

if __nom__ == "__principale__":
base_url = 'https://www.zoro.com/search?q=tool+box'
scraped_data = scrape_all_pages(url_de_base, 1)
save_to_json(données récupérées)

Ce scraper extrait efficacement les données de la liste de recherche Zoro, gère la pagination et enregistre les résultats dans un fichier JSON structuré pour une analyse plus approfondie.

Exemple de sortie :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[
{
"marque": « Groupe d'outils Apex »,
« Titre »: « Boîte à outils à 3 tiroirs »,
"prix": « Prix du produit : 149.99 $/chacun »,
"url": "https://www.zoro.com/apex-tool-group-3-drawer-tool-box-83151/i/G6893443/",
"image_url": "https://www.zoro.com/static/cms/product/prev/Réseau d'approvisionnement intégré LLC_KDT83151xx1200Wx1200Hxx305c78.jpg"
},
{
"marque": « K-Tool International »,
« Titre »: « Boîte à outils, 10 tiroirs, noire, 41 po de largeur »,
"prix": « Prix du produit : 1,400.99 $/chacun »,
"url": "https://www.zoro.com/k-tool-international-tool-box-10-drawer-black-41-in-w-kti75132/i/G406006122/",
"image_url": "https://www.zoro.com/static/cms/product/prev/Réseau d'approvisionnement intégré LLC_KTI75132xxmediaxx01xx4b250d.jpeg"
},
{
"marque": "Proto",
« Titre »: « Boîte à outils à double loquet à usage général avec plateau, acier, rouge, 20 po l. x 8.5 po P. x 9.5 po H »,
"prix": « Prix du produit : 51.99 $/chacun »,
"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/",
"image_url": "https://www.zoro.com/static/cms/product/prev/Z1o8_0mcpEx-.JPG"
},
{
"marque": "Dewalt",
« Titre »: « Boîte à outils roulante, plastique, noire, 28 po l. x 12-1/2 po P. x 12 po H. »,
"prix": « Prix du produit : 43.19 $/chacun »,
"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/",
"image_url": "https://www.zoro.com/static/cms/product/prev/Z1wK0zqcpEx-.JPG"
},
{
"marque": « Outil Milwaukee »,
« Titre »: « Boîte à outils PACKOUT XL, résistante aux chocs, polymère, noir/rouge, 22 po l x 16 po P x 19 po H »,
"prix": « Prix du produit : 119.00 $/chacun »,
"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/",
"image_url": "https://www.zoro.com/static/cms/product/prev/Z3pAyumcpEx_.JPG"
},
.... plus
]

Récupération des pages de produits Zoro

L'extraction de pages de produits sur Zoro vous permet d'extraire des informations détaillées sur des produits individuels, telles que des descriptions, des spécifications et des avis. Décomposons cette section en étapes concrètes.

Comprendre la structure de la page produit

Pour extraire efficacement les données, utilisez les outils de développement du navigateur pour inspecter les éléments clés et identifier leurs sélecteurs CSS uniques.

Capture d'écran de la page produit Zoro - Structure d'inspection HTML

Éléments clés à rechercher :

  • Titre du produit: <h1> tag avec data-za="product-name".
  • Prix: <div> tag avec data-za="product-price".
  • Déscription: <div> avec classe product-description, imbriqué <div> avec classe description-text.
  • Spécifications: Lignes dans un <table> dans les <div class="product-details-info">, avec deux <td> éléments par ligne.
  • Images du produit: <img> balises dans <div class="product-images">, avec classe product-image.

Extraction des détails clés des produits

Vous trouverez ci-dessous une fonction Python permettant d'extraire les détails d'une page produit :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
de base d'exploration importer API d'exploration
de bs4 importer BeautifulSoup
importer re

# Initialiser l'API Crawlbase
crawling_api = API d'exploration({'jeton': 'CRAWLBASE_JS_TOKEN'})

# Fonction permettant de récupérer les détails de la page produit
def gratter_la_page_du_produit(URL_produit):
choix = {
'ajax_wait': 'vrai',
'page_wait': «5000 ',
}
réponse = crawling_api.get(URL_du_produit, options)

if réponse['en-têtes']['pc_status']== «200 ':
soupe = BeautifulSoup(réponse['corps'], 'html.parser')

titre = {re.sub(r'\s+', '', soupe.select_one('h1[data-za="nom-du-produit"]').texte.strip())} if soupe.select_one('h1[data-za="nom-du-produit"]') d'autre ''
prix = soup.select_one('div[data-za="prix-du-produit"] span.devise').texte.strip() if soupe.select_one('div[data-za="prix-du-produit"] span.devise') d'autre ''
description = re.sub(r'\s+', '', soupe.select_one('div.description-du-produit div.description-texte').texte.strip()) if soupe.select_one('div.description-du-produit div.description-texte') d'autre ''
spécifications = {re.sub(r'\s+', '', ligne.find_all('td')[0].text.strip()): re.sub(r'\s+', '',ligne.find_all('td')[1].texte.strip()) pour rangée in soupe.select('div.product-details-info table tr') if len(ligne.find_all('td')) == 2}
image_urls = [img['src'] pour img in soupe.select('div.product-images img.product-image') if 'src' in [img.attrs]

retourner {
'Titre': titre,
'prix': prix,
'la description': description,
'caractéristiques': spécifications,
'image_urls': image_urls,
'URL': URL du produit
}
d'autre:
impression(f"Échec de la récupération de la page produit : {url_du_produit}. Statut: {réponse['en-têtes']['pc_status']}")
retourner {}

Stockage des données produit dans un fichier JSON

Stockez les détails du produit récupérés dans un fichier JSON pour une utilisation ultérieure :

1
2
3
4
5
6
importer json

def enregistrer_les_données_du_produit(données, nom de fichier='zoro_products.json'):
avec ouvert(nom de fichier, 'w') as f:
json.dump(données, f, indent=4)
impression(f"Données produit enregistrées dans {nom de fichier}")

Exemple de code complet

Voici le code complet pour extraire plusieurs pages de produits et stocker les données dans un fichier JSON :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
de base d'exploration importer API d'exploration
de bs4 importer BeautifulSoup
importer json
importer re

crawling_api = API d'exploration({'jeton': 'CRAWLBASE_JS_TOKEN'})

def gratter_la_page_du_produit(URL_produit):
choix = {
'ajax_wait': 'vrai',
'page_wait': «5000 ',
}
réponse = crawling_api.get(URL_du_produit, options)

if réponse['en-têtes']['pc_status']== «200 ':
soupe = BeautifulSoup(réponse['corps'], 'html.parser')

titre = {re.sub(r'\s+', '', soupe.select_one('h1[data-za="nom-du-produit"]').texte.strip())} if soupe.select_one('h1[data-za="nom-du-produit"]') d'autre ''
prix = soup.select_one('div[data-za="prix-du-produit"] span.devise').texte.strip() if soupe.select_one('div[data-za="prix-du-produit"] span.devise') d'autre ''
description = re.sub(r'\s+', '', soupe.select_one('div.description-du-produit div.description-texte').texte.strip()) if soupe.select_one('div.description-du-produit div.description-texte') d'autre ''
spécifications = {re.sub(r'\s+', '', ligne.find_all('td')[0].text.strip()): re.sub(r'\s+', '',ligne.find_all('td')[1].texte.strip()) pour rangée in soupe.select('div.product-details-info table tr') if len(ligne.find_all('td')) == 2}
image_urls = [img['src'] pour img in soupe.select('div.product-images img.product-image') if 'src' in [img.attrs]

retourner {
'Titre': titre,
'prix': prix,
'la description': description,
'caractéristiques': spécifications,
'image_urls': image_urls,
'URL': URL du produit
}
d'autre:
impression(f"Échec de la récupération de la page produit : {url_du_produit}. Statut: {réponse['en-têtes']['pc_status']}")
retourner {}

def enregistrer_les_données_du_produit(données, nom de fichier='zoro_products.json'):
avec ouvert(nom de fichier, 'w') as f:
json.dump(données, f, indent=4)
impression(f"Données produit enregistrées dans {nom de fichier}")

if __nom__ == "__principale__":
URL_du_produit = [
"https://www.zoro.com/apex-tool-group-3-drawer-tool-box-83151/i/G6893443/",
"https://www.zoro.com/k-tool-international-tool-box-10-drawer-black-41-in-w-kti75132/i/G406006122/",
"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/"
]

toutes_données_produit = []
pour url in URL_du_produit :
impression(f"Produit de grattage : {URL}")
données_produit = scrape_product_page(url)
if données_produit :
all_product_data.append(données_produit)

save_product_data(toutes_les_données_du_produit)

Ce script extraira les données produit de plusieurs pages de produits Zoro, extraira les informations pertinentes et les enregistrera dans un fichier JSON structuré.

Exemple de sortie :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
[
{
« Titre »: « Boîte à outils à 3 tiroirs »,
"prix": "$",
"la description": « Boîte à outils à 3 tiroirs »,
"caractéristiques": {
"Article": « Boîte à outils »,
"Couleur": "Noir",
"Fonctionnalités": "3 tiroirs",
« Comprend »: « Trois tiroirs »
},
« 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/"
},
{
« Titre »: « Boîte à outils, 10 tiroirs, noire, 41 po de largeur »,
"prix": "$",
"la description": "Capacité totale de 1000 10 lb ; 10 tiroirs avec glissières à roulement à rouleaux, coffre à outils à deux compartiments ; Poignées de tiroir en aluminium anodisé ; Barre de poussée ; Multiprise UL intégrée ; Ensemble de 5 doublures EVA ; Roulettes pivotantes 2 \"x 2 \", qté XNUMX avec frein, supports noirs, roue noire ; Finition avec revêtement en poudre durable ; Entièrement assemblé",
"caractéristiques": {
"Largeur": "41 pouces",
"Article": « Boîte à outils »,
"Nombre de tiroirs": "10",
"Couleur": "Noir",
« Comprend »: Coffre à outils haut de gamme à 41 tiroirs et à deux compartiments de 10 po (1,000 XNUMX lb) (noir mat),
"Fonctionnalités": "Double Baie"
},
« 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/"
},
{
« Titre »: « Boîte à outils à double loquet à usage général avec plateau, acier, rouge, 20 po l. x 8.5 po P. x 9.5 po H »,
"prix": "$",
"la description": "Le PROTO - J9975R est une boîte à outils robuste construite en acier, conçue pour fournir un stockage sécurisé et organisé pour vos outils. Cette boîte à outils individuelle offre une capacité de stockage généreuse de 2,133 2022 pouces cubes, vous permettant d'accueillir une variété d'outils et de matériaux de construction. La boîte à outils est dotée d'un système de verrouillage cadenassable pour plus de sécurité contre les accès non autorisés. Elle est équipée d'une poignée supérieure rabattable qui facilite le transport et l'accès. Principales caractéristiques :\u2022 Fabriqué en acier durable qui améliore sa longévité.\u2,133 Offre un grand espace de rangement avec une capacité impressionnante de 2022 2022 pouces cubes.\u2022 Équipé de deux compartiments pour une meilleure organisation de vos outils.\u2022 Comprend un plateau fourre-tout amovible en acier améliorant sa facilité d'utilisation et sa commodité.\uXNUMX Conçu avec une poignée supérieure rabattable pour faciliter le transport et l'accès à la boîte à outils.\uXNUMX Comprend un plateau fourre-tout amovible offrant une flexibilité dans l'agencement du stockage.",
"caractéristiques": {
"Largeur": "20 pouces",
"Profondeur": « 8-1/2 po »,
"Hauteur": « 9-1/2 po »,
« Largeur hors tout »: "20 pouces",
« Profondeur globale »: « 8 1/2 po »,
« Largeur intérieure »: « 19 3/4 po »,
« Largeur extérieure nominale »: "20 pouces",
« Hauteur intérieure »: « 9 1/4 po »,
« Hauteur nominale extérieure »: "9 pouces",
« Hauteur hors tout »: « 9 1/2 po »,
« Profondeur nominale extérieure »: "8 pouces",
« Profondeur intérieure »: « 8 1/4 po »,
« Dimensions intérieures »: « 19 3/4 po L x 8 1/4 po P x 9 1/4 po H »,
« Profondeur intérieure »: « 8 1/4 po »,
« Hauteur intérieure »: « 9 1/4 po »,
« Largeur intérieure »: « 19 3/4 po »,
"Article": « Boîte à outils »,
"Matériel": "Acier",
"Couleur": "Rouge",
"Fonctionnalités": « Plateau de transport amovible en acier »,
« Comprend »: « Plateau fourre-tout amovible »,
"Type de poignée": « Poignée supérieure pliable »,
« Conception de la poignée »: « Toit pliant »,
« Capacité de stockage »: « 2,133 XNUMX pouces cubes »,
"Nombre de pièces": "1",
« Groupement de produits de boîtes à outils portables »: « Boîtes à outils portables »,
« Coulisses de tiroir »: "Rien",
"Nombre de tiroirs": "0",
« Système de verrouillage »: "Cadenas",
"Nombre de plateaux": "1",
« Capacité de poids »: "40 livres",
"Nombre de poignées": "1",
« Matériel de base de la boîte à outils »: "Acier",
« Couleur principale de la boîte à outils »: "Rouge",
"Terminer": « Revêtement en poudre »,
« Nombre de compartiments »: "2",
« Matériel externe »: "Acier",
"Type de fermeture": "Loquet",
« Empilable »: « Non empilable »,
"Finition du corps": « Revêtement en poudre »,
« Jauge corporelle »: "14 ga",
« Nombre de clés incluses »: "0",
"Configuration": « Boîte à outils individuelle »,
« Style de poignée »: "Métal",
« Comprend les clés »: « Clés non incluses »,
« Capacité de charge totale »: "40 livres",
« Capacité de charge par tiroir »: "10 livres",
« Comprend des tiroirs »: « Tiroirs non inclus »,
"Nombre de boîtes": "1",
« Comprend des roulettes »: « Roulettes non incluses »,
« Capacité totale de stockage »: « 2,133 XNUMX pouces cubes »,
« Nombre de diviseurs »: "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/"
}
]

Réflexions finales

L'extraction des données du site Web Zoro.com peut changer la donne pour les entreprises, les chercheurs et les développeurs qui cherchent à analyser les tendances des produits, à comparer les prix ou à créer des outils d'automatisation des stocks. L'utilisation d'outils modernes comme Base d'exploration Crawling API facilite la gestion du contenu rendu par JavaScript et de la pagination.

Suivez les étapes décrites dans cet article et vous pourrez extraire des données des listes de recherche et des pages de produits de Zoro et enregistrer les résultats dans un format structuré comme JSON. Utilisez toujours ces données de manière responsable et respectez les conditions d'utilisation du site Web.

Si vous souhaitez récupérer des revenus d'autres plateformes de commerce électronique, consultez ces autres guides.

(I.e. Comment récupérer des données sur Amazon
(I.e. Comment gratter Walmart
(I.e. Comment récupérer des fonds sur AliExpress
(I.e. Comment gratter Zalando
(I.e. Comment récupérer les données de vente au détail de Farfetch

Contactez notre Support Si vous avez des questions, bon scraping !

Foire Aux Questions (FAQ)

Le scraping Web est généralement légal s'il est effectué à des fins éthiques et dans le respect des conditions de service de Zoro. Vérifiez toujours leurs politiques et ne récupérez pas de données sensibles ou restreintes.

Q. De quels outils ai-je besoin pour gratter Zoro efficacement ?

Pour scraper Zoro, vous avez besoin de Python, BeautifulSoup pour l'analyse HTML et du Base d'exploration Crawling API pour gérer le contenu rendu par JavaScript et la pagination.

Q. Comment puis-je stocker les données extraites pour une utilisation ultérieure ?

Les données extraites peuvent être enregistrées dans des formats tels que JSON, CSV ou une base de données, selon votre projet. JSON est idéal pour les données structurées et est facile à intégrer à d'autres applications.