Dans ce tutoriel, nous nous concentrerons principalement sur Dramaturge Web scraping. Qu'est-ce que Playwright ? C'est un framework pratique créé par Microsoft. Il est connu pour simplifier les interactions Web et fonctionne de manière fiable avec tous les navigateurs les plus récents comme WebKit, Chromium et Firefox. Vous pouvez également exécuter des tests en mode headless ou headed et émuler des environnements mobiles natifs comme Google Chrome pour Android et Mobile Safari.

Playwright a commencé son parcours en janvier 2020 et n'a cessé de croître depuis. En mars 2024, il a atteint environ 4 millions de téléchargements chaque semaine. De grands noms comme Adobe Spectrum et Visual Studio Code l'utilisent déjà pour leurs projets. Cette année, Playwright devient plus populaire que jamais.

Téléchargements mensuels du dramaturge 2024

source

Tout au long de ce tutoriel, nous vous montrerons étape par étape comment utiliser Playwright pour le scraping Web. Node.js. Nous présenterons également Crawlbase pour une approche différente de l'extraction de données à partir du Web. Que vous soyez un développeur expérimenté ou un novice en matière de scraping Web, ce tutoriel promet de vous doter des compétences nécessaires pour réussir. Commençons.

Table des matières

1. Portée du blog

2. Pré-requis

3. Comment faire du Web Scrape avec Playwright

4. Réduction du prix d'origine grâce à Playwright

5. Réduction du prix avec Playwright

6. Récupération de la miniature du produit à l'aide de Playwright

7. Récupération des notes de produits avec Playwright

8. Extraire le nombre d'avis produits à l'aide de Playwright

9. Récupérer les avis sur les produits avec Playwright

10. Compilation et exécution de code pour Playwright Scraping

11. Grattoir utilisant Crawlbase Crawling API et Cheerio

12. Conclusion

13. Questions fréquemment posées

1. Portée du blog

Notre objectif pour ce tutoriel est de ramper et gratter Backmarket.com, En particulier ceci. URL et extrayez les informations essentielles telles que le titre du produit, les prix d'origine et réduits, l'URL de l'image miniature, les notes, le nombre d'avis et les avis individuels.

gratter le marché arrière en utilisant le dramaturge

Nous proposerons deux approches différentes pour ce tutoriel :

Méthode du dramaturge : Tout d'abord, nous utiliserons le framework Playwright pour extraire les données pertinentes de notre URL cible. Nous fournirons des instructions étape par étape, de la configuration de votre environnement de codage pour Playwright à l'analyse du contenu HTML de la page, en passant par l'impression des résultats dans un format JSON facilement compréhensible qui peut être utilisé pour une analyse plus approfondie.

Crawlbase Crawling API Préparation: Ensuite, nous utiliserons le Crawling API de Crawlbase Pour explorer et extraire les données de la même page produit, nous enverrons une requête GET à l'URL cible pour extraire le contenu HTML sans être bloqués, puis nous l'analyserons avec Cheerio. Le contenu analysé sera également imprimé au format JSON lisible.

Vous obtiendrez une compréhension plus approfondie des différentes techniques de scraping Web en explorant ces approches et comprendrez comment adapter votre stratégie de scraping en fonction des exigences de votre projet.

2. Pré-requis

Maintenant que nous avons défini nos objectifs, nous pouvons commencer à configurer notre environnement de codage. Nous devons nous assurer que nous disposons de toutes les bases nécessaires. Voici ce dont vous aurez besoin pour commencer :

conditions préalables au scraping Web des dramaturges

Node.js installé sur votre système : Node.js sert d'environnement d'exécution, permettant l'exécution de JavaScript sur votre machine locale. Ceci est important pour exécuter le script de scraping Web que nous sommes sur le point de développer.

Pour installer l'environnement, téléchargez simplement Node.js depuis le site officiel : Site officiel de Node.js.

Compréhension fondamentale de JavaScript : Étant donné que nous utiliserons beaucoup JavaScript dans notre projet de scraping Web, il est important de connaître les bases du langage. Vous devez être familiarisé avec des concepts tels que les variables, les fonctions, les boucles et la manipulation DOM de base.

Pour ceux qui débutent avec JavaScript, pensez à consulter des tutoriels ou de la documentation disponibles sur des plateformes telles que Réseau de développeurs Mozilla (MDN) ou W3Schools.

Crawlbase Jeton API : Dans la deuxième partie de ce tutoriel, nous utiliserons le Crawlbase API pour un scraping web plus efficace. Le jeton API servira de clé pour authentifier les requêtes et exploiter tout le potentiel de l'API. Crawling API. Nous utiliserons le Crawlbase Jeton JavaScript pour imiter les requêtes réelles du navigateur.

Pour obtenir votre jeton, rendez-vous sur le Crawlbase site Web Créer un compte, et accédez à vos jetons API depuis le documentation de compte .

3. Comment faire du Web Scrape avec Playwright

Une fois Node.js installé, ouvrez votre invite de commande (Windows) ou votre terminal (macOS/Linux).

Créez un répertoire pour stocker votre code de scraping Playwright en exécutant les commandes suivantes :

1
2
mkdir dramaturge-grattoir
cd dramaturge-grattoir && -nous index.js

Installez maintenant Playwright en utilisant la commande ci-dessous :

1
npm installer le dramaturge

Importer la bibliothèque et créer une fonction pour récupérer le titre :

Une fois les packages nécessaires installés, nous pouvons commencer à coder. Commencez par importer les modules requis comme Chromium de la bibliothèque Playwright pour automatiser le navigateur et le système de fichiers pour les opérations du système de fichiers. Ce sont les modules clés pour effectuer le scraping Web et gérer les opérations de fichiers dans l'environnement Node.js.

Pour votre commodité, vous pouvez copier et coller le code ci-dessous dans votre fichier index.js

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
// Importer les modules requis
const { chrome } = exigent('dramaturge');
const fs = exigent(« fs »);

// Fonction permettant d'extraire les résultats de l'URL Web fournie
async fonction gratterRésultats(URL Web) {
// Lancer une nouvelle instance de navigateur
const navigateur = attendre chrome.lancer({ sans tête: non });

// Créer un nouveau contexte de navigation et une nouvelle page
const contexte = attendre navigateur.nouveauContexte();
const page = attendre contextenouvelle page();

// Accédez à l'URL Web fournie
attendre .goto(URL Web);

// Extraire le titre du produit
const titre = attendre page.$eval('h1', (un élément) => élément?.texteContenu.réduire());

// Fermer le navigateur
attendre navigateur.close();

// Renvoie le titre du produit
retourner Titre;
}

// Appelez la fonction scrapeResults avec l'URL Web fournie
gratterRésultats(
'https://www.backmarket.com/en-us/p/iphone-15-pro-max-256-gb-white-titanium-unlocked/4d141eb2-e989-4572-b57d-1685c77483a7',
);

Processus de grattage : La fonction scrapeResults est définie pour extraire les résultats d'une URL Web fournie. Dans cette fonction :

  • Il lance une nouvelle instance du navigateur Chromium en utilisant chromium.launch({ headless: false }), le navigateur doit fonctionner en mode non-headless (interface utilisateur visible).
  • Il crée un nouveau contexte de navigation et une nouvelle page en utilisant browser.newContext() et mes context.newPage(), respectivement. Cela prépare l'environnement pour la navigation et l'interaction avec les pages Web.
  • Il navigue vers l'URL Web fournie à l'aide de page.goto(webUrl). Cela indique au navigateur de charger l'URL spécifiée.
  • Il extrait le titre du produit de la page en utilisant page.$eval("h1", ...), qui trouve le premier <h1> élément sur la page et récupère son contenu textuel. La fonction ?.textContent.trim() garantit que les espaces de début et de fin sont supprimés du texte extrait.
inspecter les éléments HTML pour l'exploration Web

4. Réduction du prix d'origine grâce à Playwright

Pour extraire le prix d'origine de la page Web cible, visitez d'abord le URL fournie dans votre navigateur Web. Ensuite, faites un clic droit sur l’élément de prix d’origine et sélectionnez « Inspecter » pour accéder aux outils de développement, qui mettront en évidence le code HTML correspondant.

identifier l'élément HTML

Identifiez l'élément HTML représentant le prix d'origine, en vérifiant son unicité en examinant ses attributs, classes ou identifiants. Une fois identifié, copiez le sélecteur CSS de l'élément et vérifiez son exactitude dans un éditeur de texte ou de code, en effectuant les ajustements nécessaires pour cibler avec précision l'élément de prix d'origine.

1
2
3
4
5
6
// Fonction pour obtenir le contenu textuel d'un élément par sélecteur
const obtenirValueBySelector = async (sélecteur) =>
attendre .évaluer((sélecteur) => document.sélecteur de requête(sélecteur)?.texteContenu.réduire(), sélecteur);

// Extraire le prix d'origine du produit
const Prix ​​d'origine = attendre obtenirValueBySelector('[data-popper-trigger="true"].body-1-light-striked');

Définition de la fonction (getValueBySelector) :

  • Ce code définit une fonction asynchrone nommée getValueBySelector, qui prend un sélecteur CSS comme paramètre.
  • À l'intérieur de la fonction, il utilise page.evaluate() de Playwright pour exécuter du code JavaScript dans le contexte de la page actuelle.
  • Le code JavaScript à l'intérieur page.evaluate() sélectionne un élément HTML en fonction du sélecteur CSS fourni à l'aide de document.querySelector(selector).
  • Il accède ensuite à la propriété textContent de l'élément sélectionné pour récupérer son contenu textuel et applique la méthode trim() pour supprimer tous les espaces blancs de début ou de fin.
  • La fonction renvoie le contenu du texte coupé de l'élément sélectionné.

Extraction du prix d'origine :

  • Après avoir défini la fonction getValueBySelector, elle est invoquée avec un sélecteur CSS spécifique ('[data-popper-trigger="true"].body-1-light-striked') pour cibler un élément particulier de la page.
  • Le résultat, représentant le prix d'origine d'un produit, est affecté à la variable originalPrice.

5. Réduction du prix avec Playwright

Une fois de plus, faites un clic droit sur l’élément de prix d’origine et sélectionnez « Inspecter » pour accéder aux outils de développement, qui mettront en évidence le code HTML associé.

identifier l'élément HTML

Une fois que vous avez le bon sélecteur CSS, vous pouvez écrire le code comme indiqué ci-dessous :

1
2
// Extraire le prix réduit du produit
const PrixRéduit = attendre obtenirValueBySelector('[data-qa="page-produit-prix-produit"]');

Ce code extrait le prix réduit d'un produit de notre page Web cible. Il utilise probablement getValueBySelector() pour sélectionner l'élément affichant le prix réduit en fonction de son attribut. Une fois trouvée, la valeur du prix réduit est stockée dans la variable discountedPrice pour un traitement ultérieur.

6. Récupération de la miniature du produit à l'aide de Playwright

Similairement aux étapes précédentes, faites un clic droit sur l'image miniature du produit et sélectionnez « Inspecter » pour ouvrir les outils de développement. Cette action mettra en évidence le code HTML correspondant à l'image miniature.

dramaturge qui gratte l'image

Pour écrire le code permettant d'extraire l'URL de l'image miniature à l'aide de Playwright, vous pouvez utiliser l'approche suivante :

1
2
3
4
// Extraire l'URL de l'image miniature
const miniature = attendre .évaluer(
() => document.sélecteur de requête('div[data-test="carousel"] img[loading="eager"]')['src'],
);

Ce code extrait l'URL d'une image miniature d'une page Web. Nous utilisons page.evaluate() fonction permettant d'exécuter du code JavaScript dans le contexte de la page Web. Il sélectionne l'élément image dans un div avec des attributs spécifiques et récupère son src attribut, qui contient l'URL de l'image. L'URL extraite est ensuite stockée dans la variable thumbnail pour une utilisation ultérieure.

7. Récupération des notes de produits avec Playwright

Vous connaissez maintenant la procédure. Cliquez avec le bouton droit de la souris sur les notes des produits et sélectionnez « Inspecter » pour ouvrir les outils de développement. Cette action vous permettra d'afficher le code HTML de l'élément particulier que nous avons sélectionné.

gratter la note du produit avec le dramaturge

Voici l'extrait de code permettant d'extraire les notes du produit :

1
2
// Extraire les notes du produit
const notes = attendre obtenirValueBySelector('[data-test="product-page-reviews-count"] étendue');

8. Extraire le nombre d'avis produits à l'aide de Playwright

gratter le nombre d'avis sur les produits à l'aide de Playright

Encore une fois, vous voudrez utiliser le getValueBySelector pour extraire le nombre d'avis sur le produit. Passez le sélecteur CSS pour sélectionner l'élément affichant le nombre d'avis en fonction de son attribut. Une fois trouvé, stockez la valeur du nombre dans la variable reviewsCount pour une utilisation ultérieure.

1
2
// Extraire le nombre d'avis sur le produit
const avisCount = attendre obtenirValueBySelector('[data-test="product-page-reviews-count"] > span');

9. Récupérer les avis sur les produits avec Playwright

Enfin, nous allons récupérer les avis sur le produit. Obtenez le code HTML associé comme indiqué ci-dessous :

gratter les avis sur les produits avec le dramaturge

Sélectionner tous les éléments de révision : Utilisez document.querySelectorAll() pour sélectionner tous les éléments de la liste contenant des avis. Stockez-les dans une variable nommée reviewElements.

Carte sur chaque élément d'évaluation : Utilisez map() pour parcourir chaque élément de révision dans reviewElements. À l'intérieur de map() fonction, extraire des informations pertinentes telles que le nom de l'auteur, l'URL de l'avis, les notes et le texte de l'avis.

Extrait Nom de l'auteur : Utilisez querySelector() pour trouver l'élément avec la classe .body-1-bold à l'intérieur de l'élément de révision actuel. Extrayez le contenu du texte et supprimez les espaces de début et de fin.

URL d'extrait de révision : Utilisez querySelector() pour trouver l'ancre (<a>) élément avec l'attribut rel définir sur « noreferrer noopener ». Récupérez la valeur de l'attribut href et ajoutez-la à l'URL de base https://www.backmarket.com/Cela vous donnera l'URL complète de l'avis.

Extraits Notes : Utilisez querySelector() pour trouver l'élément avec l'attribut data-qa définir sur « commentaire utilisateur ». Extrayez le contenu du texte et supprimez les espaces de début et de fin.

Extrait du texte de révision : Utilisez querySelector() pour trouver l'élément avec les classes .body-1-light, .text-grey-500 et .whitespace-pre-lineExtrayez le contenu du texte et supprimez les espaces de début et de fin.

Renvoyer les informations extraites : Renvoie un objet contenant les informations extraites pour chaque élément d'avis.

Filtrer les avis : Utilisez filter() pour supprimer tous les avis dans lesquels le nom de l'auteur ou le texte de l'avis est manquant.

Voici comment vous pouvez écrire le code :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const avis = attendre .évaluer(() => {
// Sélectionner tous les éléments de la liste contenant des avis
retourner tableau.de(document.querySelectorAll('ul.list-none li.group'))
.plan((liste) => ({
// Extraire le nom de l'auteur
auteur: liste.sélecteur de requête('.body-1-bold') ?.texteContenu.réduire()
// Extraire l'URL de la révision
url: https://www.backmarket.com/${liste.querySelector('a[rel="noreferrer noopener"]')?.getAttribute('href')}`,
// Extraire les notes
votes: liste.sélecteur de requête('[data-qa="user-comment"] span.body-2-bold') ?.texteContenu.réduire()
// Extraire le texte de la critique
Avis Client: liste.sélecteur de requête('.body-1-light.text-grey-500.whitespace-pre-line') ?.texteContenu.réduire()
}))
.une fonction filtre((évaluation) => examiner.auteur && revoir.Avis Client); // Filtrer les avis dont l'auteur ou le texte de l'avis est manquant
});

10. Compilation et exécution de code pour Playwright Scraping

Maintenant que nous avons les extraits de code pour chaque élément que nous voulons extraire de backmarket.com, compilons-les et enregistrons-les sous index.js.

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
// Importer les modules requis
const { chrome } = exigent('dramaturge');
const fs = exigent(« fs »);

// Fonction permettant d'extraire les résultats de l'URL Web fournie
async fonction gratterRésultats(URL Web) {
// Lancer une nouvelle instance de navigateur
const navigateur = attendre chrome.lancer({ sans tête: non });

// Créer un nouveau contexte de navigation et une nouvelle page
const contexte = attendre navigateur.nouveauContexte();
const page = attendre contextenouvelle page();

// Accédez à l'URL Web fournie
attendre .goto(URL Web);

// Fonction pour obtenir le contenu textuel d'un élément par sélecteur
const obtenirValueBySelector = async (sélecteur) =>
attendre .évaluer((sélecteur) => document.sélecteur de requête(sélecteur)?.texteContenu.réduire(), sélecteur);

// Extraire le prix d'origine du produit
const Prix ​​d'origine = attendre obtenirValueBySelector('[data-popper-trigger="true"].body-1-light-striked');

// Extraire le prix réduit du produit
const PrixRéduit = attendre obtenirValueBySelector('[data-qa="page-produit-prix-produit"]');

// Extraire l'URL de l'image miniature
const miniature = attendre .évaluer(
() => document.sélecteur de requête('div[data-test="carousel"] img[loading="eager"]')['src'],
);

// Extraire les notes du produit
const notes = attendre obtenirValueBySelector('[data-test="product-page-reviews-count"] étendue');

// Extraire le nombre d'avis sur le produit
const avisCount = attendre obtenirValueBySelector('[data-test="product-page-reviews-count"] > span');

const avis = attendre .évaluer(() => {
// Sélectionner tous les éléments de la liste contenant des avis
retourner tableau.de(document.querySelectorAll('ul.list-none li.group'))
.plan((liste) => ({
// Extraire le nom de l'auteur
auteur: liste.sélecteur de requête('.body-1-bold') ?.texteContenu.réduire()
// Extraire l'URL de la révision
url: https://www.backmarket.com/${liste.querySelector('a[rel="noreferrer noopener"]')?.getAttribute('href')}`,
// Extraire les notes
votes: liste.sélecteur de requête('[data-qa="user-comment"] span.body-2-bold') ?.texteContenu.réduire()
// Extraire le texte de la critique
Avis Client: liste.sélecteur de requête('.body-1-light.text-grey-500.whitespace-pre-line') ?.texteContenu.réduire()
}))
.une fonction filtre((évaluation) => examiner.auteur && revoir.Avis Client); // Filtrer les avis dont l'auteur ou le texte de l'avis est manquant
});

// Fermer le navigateur
attendre navigateur.close();

// Écrire les données extraites dans un fichier JSON
fs.écrireFileSync(
'backmarket.json',
JSON.stringifier(
{
Titre,
Prix ​​d'origine,
Prix ​​réduit,
vignette,
notes,
avisCount,
Commentaires,
},
nul,
2,
),
);

// Renvoie le titre du produit
retourner Titre;
}

// Appelez la fonction scrapeResults avec l'URL Web fournie
gratterRésultats(
'https://www.backmarket.com/en-us/p/iphone-15-pro-max-256-gb-white-titanium-unlocked/4d141eb2-e989-4572-b57d-1685c77483a7',
);

Ouvrez votre terminal ou votre invite de commande et accédez au répertoire dans lequel index.js est enregistré. Exécutez le script en exécutant la commande suivante :

1
noeud index.js

Après avoir exécuté le script, vérifiez la sortie. En cas de succès, vous devriez voir les données extraites imprimées sur la console ou enregistrées dans un fichier, selon la façon dont vous avez implémenté le code.

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
{
« Titre »: "iPhone 15 Pro Max 256 Go - Blanc Titane - Débloqué - Double eSIM",
"prix original": « 1,199.00 XNUMX $ neuf »,
"Prix réduit": «$ 1,078.00»,
"vignette": "https://www.backmarket.com/cdn-cgi/image/format%3Dauto%2Cquality%3D75%2Cwidth%3D260/https://d2e6ccujb3mkqf.cloudfront.net/4d141eb2-e989-4572-b57d-1685c77483a7-1_bd9df67c-c913-4d6c-a7a2-e4a93ad78089.jpg",
« notes »: "4.4/5",
"commentairesCount": "(15 avis)",
"avis": [
{
"auteur": "Robert W.",
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-blue-titanium-unlocked/878e83a6-9edf-4e23-8580-02fb22c5a022",
« notes »: "5/5",
"avis": « Je ne pourrais pas être plus heureux de mon achat d'iPhone 15. Il est d'abord arrivé bien emballé, film protecteur sur l'écran, boîte d'origine avec le câble C fourni. Tout comme je l'aurais reçu de l'Apple Store où j'ai effectué tous mes précédents achats de produits neufs. À l'avenir, un article reconditionné sera ma première pensée ! »
},
{
"auteur": « Thérèse J. »,
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-512-gb-natural-titanium-unlocked/d17785fe-7317-4cb5-bc0c-695b6211fb64",
« notes »: "4.6/5",
"avis": « C'est la première fois que j'utilise cette application. Je n'ai pas eu de problème pour m'y retrouver. La livraison a été retardée... ça m'a rendu nerveux. J'ai personnalisé mon téléphone. Après avoir reçu le colis, j'ai remarqué quelques marques sur le téléphone qui était censé être en excellent état et sans la boîte d'origine. »
},
{
"auteur": "Syed A.",
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-black-titanium-unlocked/39357e4a-02a9-4392-b750-8be737fdbb82",
« notes »: "3.8/5",
"avis": « Je suis satisfait du produit, mais le prix devrait être plus bas, car à ce prix, vous pouvez acheter dans l'Apple Store, il vous suffit d'ajouter quelques montants supplémentaires. Le reste va bien. Si Backmarket réduit le prix, les gens ne devraient pas aller dans l'Apple Store pour acheter des articles reconditionnés... Je pense que Backmarket devrait être meilleur à l'avenir... »
},
{
"auteur": "Kevin D.",
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-black-titanium-unlocked/39357e4a-02a9-4392-b750-8be737fdbb82",
« notes »: "4/5",
"avis": « L'appareil est arrivé sans fonctionner, surchauffe (de manière significative) et redémarre littéralement toutes les 2 minutes et demie... Je ne vois pas comment quelque chose comme cela a pu être négligé... »
},
{
"auteur": "Quintrell O.",
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-blue-titanium-unlocked/878e83a6-9edf-4e23-8580-02fb22c5a022",
« notes »: "5/5",
"avis": "Super téléphone, l'air limpide"
}
]
}

11. Grattoir utilisant Crawlbase Crawling API et Cheerio

Grattage à l'aide de Crawlbase Crawling API Cheerio est pertinent pour ce tutoriel car il propose une approche alternative au web scraping. Cette méthode se distingue comme l'une des meilleures alternatives car elle utilise Crawlbase Crawling API, ce qui peut aider à éviter les blocages potentiels et les CAPTCHA imposés par le site Web cible.

De plus, l’intégration de la Crawlbase Crawling API Avec des analyseurs comme Cheerio, nous disposons d'une solution plus stable pour extraire des données de pages Web sans rencontrer les problèmes généralement rencontrés dans les méthodes de scraping traditionnelles, comme le blocage ou la limitation de débit. Cette méthode garantit que nous pouvons obtenir les informations que nous souhaitons d'un site Web de manière fiable et efficace.

Pour commencer, installez simplement les packages ci-dessous :

1
2
3
mkdir grattoir
cd grattoir && -nous index.js
npm installer crawlbase cheerio

Ces commandes créeront un répertoire appelé scraper, créé un index.js fichier et installez le Crawlbase et les bibliothèques Cheerio.

Nous allons maintenant appliquer une approche similaire à celle que nous avons utilisée avec Playwright. Cependant, cette fois, nous utiliserons une requête HTTP/HTTPs vers le Crawling API pour obtenir le code HTML de la page. Nous utiliserons ensuite Cheerio pour extraire les mêmes ensembles de données de ce code HTML.

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
// importer Crawlbase Crawling API paquet
const { API d'exploration } = exigent('base d'exploration');
const Salut = exigent('salut');
const fs = exigent(« fs »);

// initialisation Crawling API
const API = nouvelle API d'exploration({ jeton: 'Crawlbase_JS_Token' }); // Remplacez-le par votre Crawlbase jeton
const URL Web =
'https://www.backmarket.com/en-us/p/iphone-15-pro-max-256-gb-white-titanium-unlocked/4d141eb2-e989-4572-b57d-1685c77483a7';

// Crawling API obtenir l'exécution de la demande
api
.obtenez(URL Web)
.puis((RAPIDE) => {
// Appel de fonction pour analyser les données de la réponse HTML
const Données récupérées = analyser les données à partir de HTML(réponse.corps);

// Écriture des données récupérées dans un fichier JSON
fs.écrireFileSync('scraped.json', JSON.stringifier({ Données récupérées }, nul, 2));
})
.capture((erreur) => {
console.enregistrer(erreur, 'ERREUR');
});

// Fonction pour analyser les données de la réponse HTML
fonction analyser les données à partir de HTML(html) {
Essai {
const $ = Santé.charge(html),
données grattées = {
titre: '',
Prix ​​d'origine: '',
Prix ​​réduit: '',
thumbnail: '',
votes: '',
avisNombre: '',
Avis Client: []
};

Données récupérées['Titre'] = $('h1.title-1:premier').texte()réduire();
Données récupérées['prix d'origine'] = $('[data-popper-trigger="true"].body-1-light-striked:premier').texte()réduire();
Données récupérées['prix réduit'] = $('[data-qa="productpage-product-price"]:premier').texte()réduire();
Données récupérées['vignette'] = $('div[data-test="carousel"] img[loading="eager"]')['src'];
Données récupérées[« notes »] = $('[data-test="product-page-reviews-count"] span:premier').texte()réduire();
Données récupérées['avisCount'] = $('[data-test="product-page-reviews-count"] > span:first').texte()réduire();
$('ul.list-none li.group').chacun((_, élément) => {
const auteur = $(élément).trouver('.body-1-bold').texte()réduire();
const URL = https://www.backmarket.com/${$(élément).find('a[rel="noreferrer noopener"]').attr('href')}`;
const notes = $(élément).trouver('[data-qa="user-comment"] span.body-2-bold').texte()réduire();
const avis = $(élément).trouver('.body-1-light.text-grey-500.whitespace-pre-line').texte()réduire();

if (auteur et critiques) {
// Envoi des données extraites vers le tableau des avis
Données récupérées['avis'].pousser({
auteur,
url,
notes,
Commentaires,
});
}
});

retourner Données récupérées;
} capture (err) {
retourner se tromper;
}
}

Après avoir enregistré le code ci-dessus, accédez au répertoire où index.js est enregistré dans votre terminal ou dans votre invite de commande. Exécutez le script en exécutant node index.js.

Vérifiez ensuite le résultat. En cas de succès, vous verrez les données extraites imprimées comme indiqué ci-dessous :

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
{
« Données récupérées »: {
« Titre »: "iPhone 15 Pro Max 256 Go - Blanc Titane - Débloqué - Double eSIM",
"prix original": « 1,199.00 XNUMX $ neuf »,
"Prix réduit": «$ 1,078.00»,
« notes »: "4.4/5",
"commentairesCount": "(15 avis)",
"avis": [
{
"auteur": "Robert W.",
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-blue-titanium-unlocked/878e83a6-9edf-4e23-8580-02fb22c5a022",
« notes »: "5/5",
"avis": « Je ne pourrais pas être plus heureux de mon achat d'iPhone 15. Il est d'abord arrivé bien emballé, film protecteur sur l'écran, boîte d'origine avec le câble C fourni. Tout comme je l'aurais reçu de l'Apple Store où j'ai effectué tous mes précédents achats de produits neufs. À l'avenir, un article reconditionné sera ma première pensée ! »
},
{
"auteur": « Thérèse J. »,
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-512-gb-natural-titanium-unlocked/d17785fe-7317-4cb5-bc0c-695b6211fb64",
« notes »: "4.6/5",
"avis": « C'est la première fois que j'utilise cette application. Je n'ai pas eu de problème pour m'y retrouver. La livraison a été retardée... ça m'a rendu nerveux. J'ai personnalisé mon téléphone. Après avoir reçu le colis, j'ai remarqué quelques marques sur le téléphone qui était censé être en excellent état et sans la boîte d'origine. »
},
{
"auteur": "Syed A.",
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-black-titanium-unlocked/39357e4a-02a9-4392-b750-8be737fdbb82",
« notes »: "3.8/5",
"avis": « Je suis satisfait du produit, mais le prix devrait être plus bas, car à ce prix, vous pouvez acheter dans l'Apple Store, il vous suffit d'ajouter quelques montants supplémentaires. Le reste va bien. Si Backmarket réduit le prix, les gens ne devraient pas aller dans l'Apple Store pour acheter des articles reconditionnés... Je pense que Backmarket devrait être meilleur à l'avenir... »
},
{
"auteur": "Kentraile M.",
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-512-gb-blue-titanium-unlocked/6e024703-8d25-4828-872d-484d38a8cd99",
« notes »: "5/5",
"avis": « Pour la première fois, j'utilise le dernier iPhone. Il est arrivé en parfait état, comme décrit, sans défaut. Je le recommande »
},
{
"auteur": "Noé L.",
"url": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-natural-titanium-unlocked/de1fc6b3-ee1d-4d89-8db9-e382102a8528",
« notes »: "4.5/5",
"avis": "Très satisfait de cet iPhone, très facile à transférer toutes les données vers le nouvel iPhone, je recommande d'acheter sur le marché arrière, site Web très fiable"
}
]
}
}

12. Conclusion

En conclusion, ce tutoriel a démontré deux méthodes efficaces pour extraire des données de backmarket.com à l'aide de Node.js. Nous avons exploré l'utilisation de Playwright, montrant comment extraire des informations spécifiques d'un site Web. Nous avons également présenté une approche alternative utilisant le Crawling API avec Cheerio, offrant une solution à contourner les captchas et les blocs potentiels tout en analysant efficacement le contenu HTML.

Choisir entre le dramaturge et le Crawling API avec Cheerio dépendra grandement de ce dont vous avez besoin pour votre projet. Playwright fournit une solution robuste pour le scraping Web dynamique et l'interaction avec les applications Web modernes, tandis que Crawling API avec Cheerio propose une méthode fiable pour accéder et analyser le contenu HTML.

Alors, allez-y et choisissez ce qui convient le mieux à votre projet. N'oubliez pas que le code que nous avons partagé ici est entièrement gratuit. N'hésitez pas à l'appliquer également pour extraire des données d'autres sites Web !

Si vous êtes intéressé par d'autres projets de scraping, nous vous recommandons de consulter les tutoriels ci-dessous :

Comment récupérer les commentaires TikTok

Comment récupérer les données d'une entreprise sur Crunchbase

Comment récupérer des sites Web avec ChatGPT

13. Questions fréquemment posées

Q. Playwright peut-il être utilisé pour le scraping ?

R. Oui. Pour récupérer des données de sites Web à l'aide de Playwright, vous pouvez suivre ces étapes générales :

Étape 1 : Installer Playwright : Commencez par installer Playwright via npm en utilisant la commande npm install playwright.

Étape 2 : Écrivez votre script : Créez un fichier JavaScript (par exemple, scrape.js) et écrivez le code pour automatiser vos tâches de scraping à l'aide de Playwright. Cela peut inclure la navigation vers le site Web, l'interaction avec les éléments et l'extraction de données.

Étape 3 : exécutez votre script : Exécutez votre script en exécutant node scrape.js dans votre terminal ou invite de commande.

Étape 4 : Vérifier la sortie : Après avoir exécuté le script, vérifiez la sortie pour vous assurer que les données souhaitées ont été extraites avec succès.

Étape 5 : Affinez votre script : Affinez votre script selon vos besoins pour gérer les cas extrêmes ou les erreurs pouvant survenir pendant le processus de scraping.

Q. Playwright est-il plus simple que Selenium ?

En termes de facilité d'utilisation, Playwright est souvent considéré comme ayant une approche plus conviviale que Selenium. Playwright offre une interface plus simple et plus moderne pour automatiser les interactions avec le navigateur. Il dispose de fonctionnalités telles que l'installation automatique des pilotes de navigateur et la prise en charge intégrée de plusieurs langages de programmation.

D'un autre côté, Selenium existe depuis plus longtemps et dispose d'une communauté et d'un écosystème plus vastes. Il est largement utilisé et dispose d'une documentation et de ressources complètes.

En bref, le choix entre Playwright et Selenium dépend de facteurs tels que les exigences spécifiques de votre projet, les préférences de l’équipe et l’infrastructure existante.

Q : Pouvez-vous être bloqué lorsque vous récupérez un site Web à l'aide de Playwright ?

Oui, il est possible d'être bloqué lors du scraping d'un site Web à l'aide de Playwright. Les sites Web peuvent mettre en œuvre des mesures pour détecter et bloquer les activités de scraping automatisées, telles que la détection de modèles de trafic inhabituels ou de demandes à haute fréquence provenant de la même adresse IP.

Pour éviter les blocages et les CAPTCHA, nous vous recommandons d'utiliser Crawlbase. En intégrant votre code avec Crawlbase Grâce à l'API, vous pouvez bénéficier de ses fonctionnalités, notamment l'utilisation de millions d'adresses IP tournantes et d'un algorithme basé sur l'IA pour imiter l'interaction humaine. Cela permet de réduire le risque de détection et de garantir des opérations de scraping plus fluides.