Imagine construir uma plataforma de comércio eletrônico onde possamos facilmente buscar dados de produtos em tempo real de grandes lojas como eBay, Amazon e Flipkart. Claro, existe o Shopify e serviços semelhantes, mas sejamos honestos: pode parecer um pouco complicado comprar uma assinatura apenas para um projeto. Então pensei, por que não vasculhar esses sites e armazenar os produtos diretamente em nosso banco de dados? Seria uma forma eficiente e econômica de obter produtos para nossos projetos de comércio eletrônico.
Web scraping envolve a extração de dados de sites, analisando o HTML das páginas da web para ler e coletar conteúdo. Freqüentemente, envolve automatizar um navegador ou enviar solicitações HTTP ao site e, em seguida, analisar a estrutura HTML para recuperar informações específicas, como texto, links ou imagens.Puppeteer é uma biblioteca usada para raspar os sites.
Puppeteer é uma biblioteca Node.js. Ela fornece uma API de alto nível para controlar os navegadores Headless Chrome ou Chromium. Headless Chrome é uma versão do Chrome que executa tudo sem uma IU (perfeito para executar coisas em segundo plano).
Podemos automatizar várias tarefas usando o titereiro, como:
Primeiro temos que instalar a biblioteca, vá em frente e faça isso.
Usando npm:
npm i puppeteer # Downloads compatible Chrome during installation. npm i puppeteer-core # Alternatively, install as a library, without downloading Chrome.
Usando fio:
yarn add puppeteer // Downloads compatible Chrome during installation. yarn add puppeteer-core // Alternatively, install as a library, without downloading Chrome.
Usando pnpm:
pnpm add puppeteer # Downloads compatible Chrome during installation. pnpm add puppeteer-core # Alternatively, install as a library, without downloading Chrome.
Aqui está um exemplo de como raspar um site. (P.S. usei este código para recuperar produtos do site Myntra para meu projeto de comércio eletrônico.)
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;
?Explicação:
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3