Passer au contenu

Comment créer un grattoir de commerce électronique avec Cheerio + JavaScript

Les sites de commerce électronique sont un trésor de données précieuses. Les informations sur les produits, les prix, les niveaux de stock, etc. peuvent être extraites et utilisées à des fins de veille concurrentielle, d'études de marché, d'optimisation des prix, d'automatisation du dropshipping et de nombreux autres cas d'utilisation.

Dans ce didacticiel complet, vous apprendrez à tirer parti de la puissance de Cheerio et de JavaScript pour créer un scraper entièrement automatisé pour tout site Web de commerce électronique. Nous passerons en revue l'analyse du site cible, la configuration de Cheerio Scraper, l'écriture d'une logique de gestion de page personnalisée, l'intégration avec Gmail et la planification d'exécutions récurrentes.

À la fin, vous disposerez d'un scraper évolutif qui extrait les données clés du commerce électronique et les transmet à votre boîte de réception en pilote automatique. Allons-y !

Analyse du site Web de commerce électronique cible

Avant d’écrire une seule ligne de code, nous devons comprendre la structure et les éléments clés de notre site e-commerce cible. L’objectif est d’identifier :

  • L'URL de base et les paramètres pour les requêtes de recherche
  • Modèles d'URL pour parcourir les catégories de produits
  • Modèles d'URL pour les pages de produits individuelles
  • Emplacements des données critiques que nous souhaitons extraire (titre, description, prix, etc.)

Cette analyse éclairera la façon dont nous configurons notre grattoir Cheerio.

Le moyen le plus simple consiste à explorer manuellement le site : recherchez des produits, visitez les pages de catégories et d'articles et utilisez les outils de développement du navigateur pour inspecter les éléments et les URL.

Par exemple, sur une page produit Amazon, on peut voir :

  • Le titre du produit est dans une balise H1
  • Le SKU ASIN est dans une période avec id="productDetails_detailBullets_sections1"
  • Le prix est en span id="priceblock_ourprice"

Faites cette reconnaissance sur votre site cible pour trouver des sélecteurs CSS pour les données dont vous avez besoin.

Vérifiez également si le site s'appuie fortement sur JavaScript. Une astuce consiste à désactiver JS dans votre navigateur et à voir si le contenu se charge toujours. Sinon, nous aurons peut-être besoin d'un outil d'automatisation de navigateur comme Puppeteer au lieu de Cheerio.

D'accord, supposons que nous ayons terminé l'analyse de SampleStore.com et rassemblé les éléments suivants :

Armés de ces informations, nous sommes prêts à configurer notre grattoir Cheerio !

Configuration de Cheerio Scraper

Rendez-vous sur Apify et créez un nouvel acteur Cheerio Scraper. Nous utiliserons les champs de configuration clés suivants :

URL de démarrage – Nous définirons cela sur notre URL de recherche qui accepte les paramètres searchTerm et pageNumber.

Sélecteur de lien – Nous souhaitons extraire les liens de chaque page, nous allons donc utiliser un simple sélecteur "a".

Pseudo-URL – Pas besoin de cela puisque nous utilisons des modèles Glob.

Modèles globaux – Nous allons créer ici deux modèles :

  1. Pour faire correspondre les URL de pagination comme https://www.examplestore.com/search?q=shoes&page=2

  2. Pour faire correspondre les URL de produits comme https://www.examplestore.com/product/1234/

Données d'utilisateur – Utile pour étiqueter les types de requêtes, par exemple « RECHERCHE », « LISTE », « PRODUIT »

Fonction de page – C'est ici que nous écrirons une logique personnalisée pour gérer chaque type de page.

Sauvegardons cette configuration en tant que tâche Apify et nous sommes prêts à passer ensuite à l'écriture de la fonction Page !

Écrire la fonction de page

La fonction Page s'exécute sur chaque page chargée par Cheerio Scraper. Ici, nous pouvons analyser la requête en cours, effectuer des actions telles que l'extraction de données ou la mise en file d'attente de plusieurs URL, et renvoyer des données récupérées.

Nous allons d'abord vérifier le request.userData.label pour déterminer le type de page :

if (request.userData.label === ‘SEARCH‘) {
  // Search page logic
} else if (request.userData.label === ‘LISTING‘) {
  // Category listing page logic 
} else if (request.userData.label === ‘PRODUCT‘) {
  // Product detail page logic
}

Pour la page de recherche, nous souhaiterons peut-être récupérer le nombre total de produits trouvés et l'enregistrer.

Sur les pages de liste, nous pouvons mettre en file d'attente davantage d'URL de détails sur les produits à récupérer.

Enfin, sur les pages produits, nous pouvons utiliser nos sélecteurs pour extraire les champs de données critiques, créer un objet de résultats et le renvoyer :

const results = {
  url: request.url,
  title: $(selectors.title).text(),
  description: $(selectors.description).text(),
  price: $(selectors.price).text(),
}

return results;

Les objets renvoyés par chaque page produit seront stockés dans l'ensemble de données résultant.

Cette logique de fonction de page nous permet de gérer chaque type de page différemment et de personnaliser notre comportement de scraping.

Intégration à Gmail pour recevoir des données récupérées

Maintenant que notre scraper extrait les données, nous souhaitons probablement recevoir les résultats sans avoir à les exporter manuellement depuis Apify après chaque exécution.

Heureusement, Apify propose plus de 60 intégrations, notamment la messagerie électronique, le stockage cloud, les bases de données, les API, etc.

Mettons en place une intégration Gmail afin que notre ensemble de données récupérées nous soit automatiquement envoyé par e-mail.

Dans votre acteur, rendez-vous dans l'onglet Intégrations :

  • Cliquez sur "Ajouter une intégration" et sélectionnez Gmail
  • Connectez-vous avec votre compte Google
  • Sélectionnez l'adresse e-mail à laquelle envoyer les résultats
  • Personnalisez la ligne d'objet et le corps si nécessaire
  • Appuyez sur Enregistrer et activez l'intégration

Désormais, chaque fois que notre acteur s'exécutera, nous recevrons un e-mail avec le fichier de données récupéré en pièce jointe !

Planification du Scraper pour qu'il s'exécute automatiquement

La dernière étape consiste à établir un calendrier pour que notre scraper s'exécute automatiquement de manière récurrente.

Dans la page des acteurs, cliquez sur « Horaires » puis sur « Ajouter un horaire ».

Nous pouvons donner une étiquette au planning, définir une expression cron pour les exécutions récurrentes (par exemple quotidiennes) et sélectionner un fuseau horaire.

Désormais, notre grattoir de commerce électronique Cheerio fonctionnera comme sur des roulettes selon le calendrier, récupérera les données mises à jour et fournira les résultats directement dans notre boîte de réception !

Conclusion

Dans ce tutoriel, nous :

  • Analyse d'un site e-commerce pour identifier les champs de données clés
  • Configuration d'un Cheerio Scraper avec des URL de démarrage, des modèles Glob et une fonction de page
  • Rédaction d'une logique de page personnalisée pour gérer les pages de recherche, de liste et de produits
  • Gmail intégré pour recevoir automatiquement les ensembles de données récupérés
  • Planifié l'acteur pour qu'il s'exécute de manière récurrente

Vous disposez désormais d'un plan complet pour créer des scrapers Web de commerce électronique évolutifs avec Cheerio !

Quelques prochaines étapes pour étendre votre grattoir :

  • Supprimez les champs de données supplémentaires tels que les avis, les images, l'inventaire, etc.
  • Enregistrez les données récupérées dans une base de données ou une API au lieu de simplement les envoyer par courrier électronique.
  • Déployez le scraper sur Apify Cloud pour une évolutivité sans serveur

Nous n'avons fait qu'effleurer la surface de ce qui est possible avec le web scraping et l'automatisation à l'aide d'Apify. Pour en savoir plus, consultez :

  • Documentation pour tous les SDK et outils Apify comme Puppeteer Scraper et Crawlee
  • Ressource Web Scraping 101 comprenant des ebooks et des cours vidéo gratuits
  • Forum communautaire d'Apify pour poser des questions et rencontrer d'autres développeurs

Bon grattage !

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *