Stellen Sie sich den Aufbau einer E-Commerce-Plattform vor, auf der wir problemlos Produktdaten in Echtzeit von großen Geschäften wie eBay, Amazon und Flipkart abrufen können. Natürlich gibt es Shopify und ähnliche Dienste, aber seien wir ehrlich: Es kann sich etwas umständlich anfühlen, ein Abonnement nur für ein Projekt zu kaufen. Also dachte ich, warum nicht diese Seiten durchsuchen und die Produkte direkt in unserer Datenbank speichern? Dies wäre eine effiziente und kostengünstige Möglichkeit, Produkte für unsere E-Commerce-Projekte zu erhalten.
Beim Web Scraping werden Daten von Websites extrahiert, indem der HTML-Code von Webseiten analysiert wird, um Inhalte zu lesen und zu sammeln. Dabei geht es oft darum, einen Browser zu automatisieren oder HTTP-Anfragen an die Website zu senden und dann die HTML-Struktur zu analysieren, um bestimmte Informationen wie Text, Links oder Bilder abzurufen. Puppeteer ist eine Bibliothek, die zum Scrapen der Websites verwendet wird.
Puppeteer ist eine Node.js-Bibliothek. Sie bietet eine High-Level-API zur Steuerung kopfloser Chrome- oder Chromium-Browser. Headless Chrome ist eine Version von Chrome, die alles ohne Benutzeroberfläche ausführt (ideal für die Ausführung von Dingen im Hintergrund).
Wir können verschiedene Aufgaben mit Puppenspieler automatisieren, wie zum Beispiel:
Zuerst müssen wir die Bibliothek installieren, machen Sie weiter.
Mit npm:
npm i puppeteer # Downloads compatible Chrome during installation. npm i puppeteer-core # Alternatively, install as a library, without downloading Chrome.
Garn verwenden:
yarn add puppeteer // Downloads compatible Chrome during installation. yarn add puppeteer-core // Alternatively, install as a library, without downloading Chrome.
Pnpm verwenden:
pnpm add puppeteer # Downloads compatible Chrome during installation. pnpm add puppeteer-core # Alternatively, install as a library, without downloading Chrome.
Hier ist ein Beispiel für das Scrapen einer Website. (P.S. Ich habe diesen Code verwendet, um für mein E-Commerce-Projekt Produkte von der Myntra-Website abzurufen.)
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 sport wear', { 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;
?Erläuterung:
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3