Почетак рада са Веб Сцрапинг-ом у ЈаваСцрипт-у

Веб стругање је једна од најзанимљивијих ствари у свету кодирања.

Шта је веб стругање?

Зашто уопште постоји?

Хајде да сазнамо одговоре.

Шта је Веб Сцрапинг?

Веб сцрапинг је аутоматизовани задатак за издвајање података са веб локација.

Постоји много апликација за веб стругање. Издвајање цена производа и њихово поређење са различитим платформама е-трговине. Добијање дневне понуде са веба. Прављење сопственог претраживача као што је Гоогле, Иахоо, итд., листа се наставља.

Можете да урадите више него што мислите са веб стругањем. Када сазнате како да извучете податке са веб локација, онда можете да радите шта год желите са подацима.

Програм који издваја податке са веб локација назива се веб стругач. Научићете да пишете веб скрапере у ЈаваСцрипт-у.

Углавном постоје два дела стругања веба.

  • Добијање података помоћу библиотека захтева и претраживача без главе.
  • Рашчлањивање података да бисмо издвојили тачне информације које желимо из података.

Без даљег одлагања, хајде да почнемо.

Подешавање пројекта

Претпостављам да имате инсталиран Ноде, ако не, погледајте водич за инсталацију НодеЈС-а.

Користићемо пакете ноде-фетцх и цхеерио за веб сцрапинг у ЈаваСцрипт-у. Хајде да подесимо пројекат са нпм-ом да ради са пакетом треће стране.

Хајде да брзо видимо кораке да завршимо наше подешавање.

  • Направите директоријум под називом веб_сцрапинг и идите до њега.
  • Покрените команду нпм инит да бисте иницијализовали пројекат.
  • Одговорите на сва питања на основу ваших жеља.
  • Сада инсталирајте пакете користећи команду
npm install node-fetch cheerio

Хајде да видимо увид у инсталиране пакете.

  Како Сецуре Енцлаве штити ваше Аппле уређаје?

ноде-фетцх

Пакет ноде-фетцх доводи виндов.фетцх у окружење чвора јс. Помаже да направите ХТТП захтеве и добијете необрађене податке.

цхеерио

Пакет цхеерио користи се за рашчлањивање и издвајање информација које су неопходне из необрађених података.

Два пакета ноде-фетцх и цхеерио су довољно добри за веб сцрапинг у ЈаваСцрипт-у. Нећемо видети све методе које пакети пружају. Видећемо ток стругања веба и најкорисније методе у том току.

Радећи то научићете веб стругање. Дакле, пређимо на посао.

Сцрапинг списак Светског купа у крикету

Овде, у овом одељку, урадићемо стварно стругање веба.

Шта извлачимо?

По наслову одељка, мислим да ћете лако погодити. Да, шта год да мислите је тачно. Хајде да извучемо све до сада победнике и другопласиране светске купове у крикету.

  • Направите датотеку под називом ектрацт_црицкет_ворлд_цупс_лист.јс у пројекту.
  • Користићемо Википедиа Светско првенство у крикету страницу да бисте добили жељене информације.
  • Прво, узмите необрађене податке користећи пакет ноде-фетцх.
  • Код испод добија необрађене податке горње странице Википедије.
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();

Добили смо необрађене податке са УРЛ-а. Сада је време да из сирових података извучемо информације које су нам потребне. Хајде да користимо пакет цхеерио да издвојимо податке.

Издвајање података који укључују ХТМЛ ознаке са цхеерио је цакевалк. Пре него што пређемо на стварне податке, хајде да видимо неке примере рашчлањивања података помоћу цхеерио-а.

  • Парсирајте ХТМЛ податке користећи методу цхеерио.лоад.
const parsedSampleData = cheerio.load(
      `<div id="container"><p id="title">I'm title</p></div>`
   );
  • Рашчлањивали смо горњи ХТМЛ код. Како из њега издвојити садржај п ознаке? То је исто као и селектори у ЈаваСцрипт ДОМ манипулацији.
  Како да се упозорење о смерницама заједнице уклони са вашег ИоуТубе налога

цонсоле.лог(парседСамплеДата(“#титле”).тект());

Можете одабрати ознаке како желите. Можете проверити различите методе из цхеерио званични сајт.

  • Сада је време да извучемо листу светског купа. Да бисмо издвојили информације, морамо да знамо ХТМЛ ознаке које се налазе на страници. Иди на страница на Википедији светског купа у крикету и прегледајте страницу да бисте добили информације о ХТМЛ ознакама.

Ево комплетног кода.

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();

А ево и скрапаних података.

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

Цоол 😎, зар не?

  Снапцхат обавештење не ради? 9 најбољих начина за поправку!

Сцрапинг Темплате

Добијање необрађених података са УРЛ-а уобичајено је у сваком пројекту веб-стругања. Једини део који се мења је издвајање података према захтеву. Можете испробати доњи код као шаблон.

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();

Закључак

Научили сте како да скрепате веб страницу. Сада је ваш ред да вежбате кодирање.

Такође бих предложио да проверите популарне оквире за стругање веба да бисте истражили и решења за веб-сцрапинг заснована на облаку.

Срећно кодирање 🙂

Да ли сте уживали у читању чланка? Шта кажете на дељење са светом?