


Web Scraping simplifié : analysez n'importe quelle page HTML avec Puppeteer
Imaginez créer une plate-forme de commerce électronique sur laquelle nous pouvons facilement récupérer des données sur les produits en temps réel auprès de grands magasins comme eBay, Amazon et Flipkart. Bien sûr, il existe Shopify et des services similaires, mais soyons honnêtes : il peut sembler un peu fastidieux d'acheter un abonnement uniquement pour un projet. Alors, je me suis dit, pourquoi ne pas gratter ces sites et stocker les produits directement dans notre base de données ? Ce serait un moyen efficace et rentable d'obtenir des produits pour nos projets de commerce électronique.
Qu’est-ce que le Web Scraping ?
Le Web scraping consiste à extraire des données de sites Web en analysant le HTML des pages Web pour lire et collecter du contenu. Cela implique souvent d'automatiser un navigateur ou d'envoyer des requêtes HTTP au site, puis d'analyser la structure HTML pour récupérer des informations spécifiques telles que du texte, des liens ou des images. Puppeteer est une bibliothèque utilisée pour gratter les sites Web.
?Qu'est-ce que le Marionnettiste ?
Puppeteer est une bibliothèque Node.js. Elle fournit une API de haut niveau pour contrôler les navigateurs Chrome ou Chromium sans tête. Headless Chrome est une version de Chrome qui exécute tout sans interface utilisateur (parfait pour exécuter des choses en arrière-plan).
Nous pouvons automatiser diverses tâches à l'aide du marionnettiste, telles que :
- Web Scraping : L'extraction de contenu de sites Web implique d'interagir avec le HTML et le JavaScript de la page. Nous récupérons généralement le contenu en ciblant les sélecteurs CSS.
- Génération PDF : la conversion de pages Web en PDF par programmation est idéale lorsque vous souhaitez générer directement un PDF à partir d'une page Web, plutôt que de prendre une capture d'écran puis de convertir la capture d'écran en PDF. (P.S. Toutes mes excuses si vous avez déjà des solutions pour cela).
- Tests automatisés : Exécution de tests sur des pages Web en simulant les actions des utilisateurs comme cliquer sur des boutons, remplir des formulaires et prendre des captures d'écran. Cela élimine le processus fastidieux consistant à parcourir manuellement de longs formulaires pour s'assurer que tout est en place.
?Comment débuter avec le marionnettiste ?
Tout d'abord, nous devons installer la bibliothèque, allez-y et faites-le.
Utiliser npm :
npm i puppeteer # Downloads compatible Chrome during installation. npm i puppeteer-core # Alternatively, install as a library, without downloading Chrome.
Utiliser du fil :
yarn add puppeteer // Downloads compatible Chrome during installation. yarn add puppeteer-core // Alternatively, install as a library, without downloading Chrome.
Utilisation de pnpm :
pnpm add puppeteer # Downloads compatible Chrome during installation. pnpm add puppeteer-core # Alternatively, install as a library, without downloading Chrome.
? Exemple pour démontrer l'utilisation du marionnettiste
Voici un exemple de comment gratter un site Web. (P.S. J'ai utilisé ce code pour récupérer des produits du site Myntra pour mon projet e-commerce.)
const puppeteer = require("puppeteer"); const CategorySchema = require("./models/Category"); // Define the scrape function as a named async function const scrape = async () => { // Launch a new browser instance const browser = await puppeteer.launch({ headless: false }); // Open a new page const page = await browser.newPage(); // Navigate to the target URL and wait until the DOM is fully loaded await page.goto('https://www.myntra.com/mens-sport-wear?rawQuery=mens%20sport%20wear', { waitUntil: 'domcontentloaded' }); // Wait for additional time to ensure all content is loaded await new Promise((resolve) => setTimeout(resolve, 25000)); // Extract product details from the page const items = await page.evaluate(() => { // Select all product elements const elements = document.querySelectorAll('.product-base'); const elementsArray = Array.from(elements); // Map each element to an object with the desired properties const results = elementsArray.map((element) => { const image = element.querySelector(".product-imageSliderContainer img")?.getAttribute("src"); return { image: image ?? null, brand: element.querySelector(".product-brand")?.textContent, title: element.querySelector(".product-product")?.textContent, discountPrice: element.querySelector(".product-price .product-discountedPrice")?.textContent, actualPrice: element.querySelector(".product-price .product-strike")?.textContent, discountPercentage: element.querySelector(".product-price .product-discountPercentage")?.textContent?.split(' ')[0]?.slice(1, -1), total: 20, // Placeholder value, adjust as needed available: 10, // Placeholder value, adjust as needed ratings: Math.round((Math.random() * 5) * 10) / 10 // Random rating for demonstration }; }); return results; // Return the list of product details }); // Close the browser await browser.close(); // Prepare the data for saving const data = { category: "mens-sport-wear", subcategory: "Mens", list: items }; // Create a new Category document and save it to the database // Since we want to store product information in our e-commerce store, we use a schema and save it to the database. // If you don't need to save the data, you can omit this step. const category = new CategorySchema(data); console.log(category); await category.save(); // Return the scraped items return items; }; // Export the scrape function as the default export module.exports = scrape;
?Explication :
- Dans ce code, nous utilisons Puppeteer pour récupérer les données produit d'un site Web. Après avoir extrait les détails, nous créons un schéma (CategorySchema) pour structurer et enregistrer ces données dans notre base de données. Cette étape est particulièrement utile si nous souhaitons intégrer les produits scrapés dans notre boutique e-commerce. Si le stockage des données dans une base de données n'est pas requis, vous pouvez omettre le code lié au schéma.
- Avant de scraper, il est important de comprendre la structure HTML de la page et d'identifier quels sélecteurs CSS contiennent le contenu que vous souhaitez extraire.
- Dans mon cas, j'ai utilisé les sélecteurs CSS pertinents identifiés sur le site Myntra pour extraire le contenu que je ciblais.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

Les principales utilisations de JavaScript dans le développement Web incluent l'interaction client, la vérification du formulaire et la communication asynchrone. 1) Mise à jour du contenu dynamique et interaction utilisateur via les opérations DOM; 2) La vérification du client est effectuée avant que l'utilisateur ne soumette les données pour améliorer l'expérience utilisateur; 3) La communication de rafraîchissement avec le serveur est réalisée via la technologie AJAX.

L'application de JavaScript dans le monde réel comprend un développement frontal et back-end. 1) Afficher les applications frontales en créant une application de liste TODO, impliquant les opérations DOM et le traitement des événements. 2) Construisez RestulAPI via Node.js et Express pour démontrer les applications back-end.

Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

C et C jouent un rôle essentiel dans le moteur JavaScript, principalement utilisé pour implémenter des interprètes et des compilateurs JIT. 1) C est utilisé pour analyser le code source JavaScript et générer une arborescence de syntaxe abstraite. 2) C est responsable de la génération et de l'exécution de bytecode. 3) C met en œuvre le compilateur JIT, optimise et compile le code de point chaud à l'exécution et améliore considérablement l'efficacité d'exécution de JavaScript.

Python est plus adapté à la science et à l'automatisation des données, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python fonctionne bien dans la science des données et l'apprentissage automatique, en utilisant des bibliothèques telles que Numpy et Pandas pour le traitement et la modélisation des données. 2. Python est concis et efficace dans l'automatisation et les scripts. 3. JavaScript est indispensable dans le développement frontal et est utilisé pour créer des pages Web dynamiques et des applications à une seule page. 4. JavaScript joue un rôle dans le développement back-end via Node.js et prend en charge le développement complet de la pile.
