Noțiuni introductive cu Web Scraping în JavaScript

Web scraping este unul dintre cele mai interesante lucruri din lumea codificării.

Ce este web scraping?

De ce chiar există?

Să aflăm răspunsurile.

Ce este Web Scraping?

Web scraping este o sarcină automată pentru extragerea datelor de pe site-uri web.

Există multe aplicații de web scraping. Extragerea prețurilor produselor și compararea acestora cu diferite platforme de comerț electronic. Obținerea unei cotații zilnice de pe web. Construindu-vă propriul motor de căutare, cum ar fi Google, Yahoo, etc., Lista poate continua.

Puteți face mai mult decât credeți cu web scraping. Odată ce ați învățat cum să extrageți datele de pe site-uri web, atunci puteți face ce doriți cu datele.

Programul care extrage datele de pe site-uri web se numește web scraper. Veți învăța să scrieți web scrapers în JavaScript.

Există în principal două părți ale răzuirii web.

  • Obținerea datelor folosind biblioteci de solicitări și un browser fără cap.
  • Analizarea datelor pentru a extrage informațiile exacte pe care le dorim din date.

Fără alte prelungiri, să începem.

Configurarea proiectului

Presupun că aveți Node instalat, dacă nu, consultați ghidul de instalare NodeJS.

Vom folosi pachetele node-fetch și cheerio pentru web scraping în JavaScript. Să setăm proiectul cu npm pentru a lucra cu un pachet terță parte.

Să vedem rapid pașii pentru a finaliza configurarea noastră.

  • Creați un director numit web_scraping și navigați la el.
  • Rulați comanda npm init pentru a inițializa proiectul.
  • Răspundeți la toate întrebările în funcție de preferințele dvs.
  • Acum, instalați pachetele folosind comanda
npm install node-fetch cheerio

Să vedem o privire asupra pachetelor instalate.

  Ce este WPS WiFi Protected Setup și este periculos?

nod-fetch

Pachetul node-fetch aduce window.fetch în mediul node js. Ajută la efectuarea solicitărilor HTTP și la obținerea datelor brute.

cheerio

Pachetul cheerio este utilizat pentru a analiza și extrage informațiile necesare din datele brute.

Două pachete node-fetch și cheerio sunt suficient de bune pentru web scraping în JavaScript. Nu vom vedea toate metodele oferite de pachete. Vom vedea fluxul de web scraping și cele mai utile metode din acel flux.

Veți învăța scrapingul web făcând-o. Deci, să trecem la treabă.

Scraping Cricket World Cup List

Aici, în această secțiune, vom face web scraping efectiv.

Ce extragem?

După titlul secțiunii, cred că ați ghici cu ușurință. Da, orice crezi tu este corect. Să extragem toți câștigătorii Cupei Mondiale de cricket și pe locul doi până acum.

  • Creați un fișier numit extract_cricket_world_cups_list.js în proiect.
  • Vom folosi Wikipedia Cupa Mondială de Cricket pagina pentru a obține informațiile dorite.
  • Mai întâi, obțineți datele brute folosind pachetul node-fetch.
  • Codul de mai jos obține datele brute ale paginii Wikipedia de mai sus.
const fetch = require("node-fetch");

// function to get the raw data
const getRawData = (URL) => {
   return fetch(URL)
      .then((response) => response.text())
      .then((data) => {
         return data;
      });
};

// URL for data
const URL = "https://en.wikipedia.org/wiki/Cricket_World_Cup";

// start of the program
const getCricketWorldCupsList = async () => {
   const cricketWorldCupRawData = await getRawData(URL);
   console.log(cricketWorldCupRawData);
};

// invoking the main function
getCricketWorldCupsList();

Am primit datele brute de la adresa URL. Acum, este timpul să extragem informațiile de care avem nevoie din datele brute. Să folosim pachetul cheerio pentru a extrage datele.

Extragerea datelor care implică etichete HTML cu cheerio este o simplă plimbare. Înainte de a intra în datele reale, să vedem câteva exemple de analizare a datelor folosind cheerio.

  • Analizați datele HTML folosind metoda cheerio.load.
const parsedSampleData = cheerio.load(
      `<div id="container"><p id="title">I'm title</p></div>`
   );
  • Am analizat codul HTML de mai sus. Cum se extrage conținutul etichetei p din acesta? Este la fel ca selectorii din manipularea DOM JavaScript.
  Cum să subvoltați un procesor pentru a crește performanța computerului

console.log(parsedSampleData(„#title”).text());

Puteți selecta etichetele după cum doriți. Puteți verifica diferite metode din site-ul oficial cheerio.

  • Acum, este timpul să extragem lista cupei mondiale. Pentru a extrage informațiile, trebuie să cunoaștem etichetele HTML că informațiile se află pe pagină. Du-te la Pagina Wikipedia pentru Cupa Mondială de cricket și inspectați pagina pentru a obține informații despre etichetele HTML.

Aici este codul complet.

const fetch = require("node-fetch");
const cheerio = require("cheerio");

// function to get the raw data
const getRawData = (URL) => {
   return fetch(URL)
      .then((response) => response.text())
      .then((data) => {
         return data;
      });
};

// URL for data
const URL = "https://en.wikipedia.org/wiki/Cricket_World_Cup";

// start of the program
const getCricketWorldCupsList = async () => {
   const cricketWorldCupRawData = await getRawData(URL);

   // parsing the data
   const parsedCricketWorldCupData = cheerio.load(cricketWorldCupRawData);

   // extracting the table data
   const worldCupsDataTable = parsedCricketWorldCupData("table.wikitable")[0]
      .children[1].children;

   console.log("Year --- Winner --- Runner");
   worldCupsDataTable.forEach((row) => {
      // extracting `td` tags
      if (row.name === "tr") {
         let year = null,
            winner = null,
            runner = null;

         const columns = row.children.filter((column) => column.name === "td");

         // extracting year
         const yearColumn = columns[0];
         if (yearColumn) {
            year = yearColumn.children[0];
            if (year) {
               year = year.children[0].data;
            }
         }

         // extracting winner
         const winnerColumn = columns[3];
         if (winnerColumn) {
            winner = winnerColumn.children[1];
            if (winner) {
               winner = winner.children[0].data;
            }
         }

         // extracting runner
         const runnerColumn = columns[5];
         if (runnerColumn) {
            runner = runnerColumn.children[1];
            if (runner) {
               runner = runner.children[0].data;
            }
         }

         if (year && winner && runner) {
            console.log(`${year} --- ${winner} --- ${runner}`);
         }
      }
   });
};

// invoking the main function
getCricketWorldCupsList();

Și, aici sunt datele răzuite.

Year --- Winner --- Runner
1975 --- West Indies --- Australia
1979 --- West Indies --- England
1983 --- India --- West Indies
1987 --- Australia --- England
1992 --- Pakistan --- England
1996 --- Sri Lanka --- Australia
1999 --- Australia --- Pakistan
2003 --- Australia --- India
2007 --- Australia --- Sri Lanka
2011 --- India --- Sri Lanka
2015 --- Australia --- New Zealand
2019 --- England --- New Zealand

Cool 😎, nu-i așa?

  Cele mai bune gadgeturi pentru adulții cu ADHD în 2024

Șablon de răzuire

Obținerea datelor brute de la adresa URL este obișnuită în fiecare proiect de web scraping. Singura parte care se modifică este extragerea datelor conform cerințelor. Puteți încerca codul de mai jos ca șablon.

const fetch = require("node-fetch");
const cheerio = require("cheerio");
const fs = require("fs");
// function to get the raw data
const getRawData = (URL) => {
   return fetch(URL)
      .then((response) => response.text())
      .then((data) => {
         return data;
      });
};
// URL for data
const URL = "https://example.com/";
// start of the program
const scrapeData = async () => {
   const rawData = await getRawData(URL);
   // parsing the data
   const parsedData = cheerio.load(rawData);
   console.log(parsedData);
   // write code to extract the data
   // here
   // ...
   // ...
};
// invoking the main function
scrapeData();

Concluzie

Ați învățat cum să răzuiți o pagină web. Acum, este rândul tău să exersezi codificarea.

De asemenea, aș sugera să verificați cadrele populare de web scraping pentru a explora și soluții de web-scraping bazate pe cloud.

Codare fericită 🙂

Ți-a plăcut să citești articolul? Ce zici de împărtășirea cu lumea?