Ako web-mjesto ne uspije pružiti dobar API, vaša sljedeća najbolja oklada je da izbrišete njegov sadržaj. Cheerio i Express.js pomoći će vam u tome.

Web scraping je tehnika koja omogućuje dobivanje podataka s određene web stranice. Web stranice koriste HTML za opis svog sadržaja. Ako je HTML čist i semantičan, lako ga je koristiti za lociranje korisnih podataka.

Obično ćete koristiti web strugač za dobivanje i praćenje podataka i praćenje budućih promjena u njima.

Koncepti jQueryja koje vrijedi znati prije upotrebe Cheerio

jQuery je jedan od najpopularnijih JavaScript paketa koji postoje. To olakšava rad s Objektni model dokumenta (DOM), rukovati događajima, animacijom i više. Cheerio je paket za struganje weba koji se nadograđuje na jQuery—dijeli istu sintaksu i API, a istovremeno olakšava analizu HTML ili XML dokumenata.

Prije nego što naučite koristiti Cheerio, važno je znati kako odabrati HTML elemente pomoću jQueryja. Srećom, jQuery podržava većinu CSS3 selektora što olakšava preuzimanje elemenata iz DOM-a. Pogledajte sljedeći kod:

instagram viewer
$("#container");

U gornjem bloku koda jQuery odabire elemente s iskaznica od "kontejnera". Slična implementacija koja koristi uobičajeni stari JavaScript izgledala bi otprilike ovako:

document.querySelectorAll("#container");

Uspoređujući posljednja dva bloka koda, možete vidjeti da je prvi blok koda mnogo lakši za čitanje nego drugi. To je ljepota jQueryja.

jQuery također ima korisne metode poput tekst(), html(), i još mnogo toga što omogućuje manipuliranje HTML elementima. Postoji nekoliko metoda koje možete koristiti za kretanje kroz DOM, npr roditelj(), braća i sestre (), prethodni(), i Sljedeći().

The svaki() Metoda u jQueryju vrlo je popularna u mnogim Cheerio projektima. Omogućuje vam ponavljanje preko objekata i nizova. Sintaksa za svaki() metoda izgleda ovako:

$().each(<arrayorobject>, callback)

U gornjem bloku koda, uzvratiti poziv pokreće se za svaku iteraciju argumenta polja ili objekta.

Učitavanje HTML-a uz Cheerio

Za početak parsiranja HTML ili XML podataka s Cheeriom, možete koristiti cheerio.load() metoda. Pogledajte ovaj primjer:

const $ = cheerio.load('

Hello, world!

'
);
console.log($('h1').text())

Ovaj blok koda koristi jQuery tekst() metoda dohvaća tekstualni sadržaj h1 element. Potpuna sintaksa za opterećenje() metoda izgleda ovako:

load(content, options, mode)

The sadržaj parametar se odnosi na stvarne HTML ili XML podatke koje prosljeđujete opterećenje() metoda. opcije je izborni objekt koji može modificirati ponašanje metode. Prema zadanim postavkama, opterećenje() metoda uvodi html, glava, i tijelo elemente ako nedostaju. Ako želite zaustaviti ovo ponašanje, provjerite jeste li postavili način rada na lažno.

Crtanje hakerskih vijesti uz Cheerio

Kod korišten u ovom projektu dostupan je u a GitHub spremište i besplatan je za korištenje pod MIT licencom.

Vrijeme je da spojite sve što ste do sada naučili i izradite jednostavno web strugalo. Hacker News je popularna web stranica za poduzetnike i inovatore. To je također savršeno web mjesto na kojem možete iskoristiti svoje vještine struganja webom jer se brzo učitava, ima vrlo jednostavno sučelje i ne prikazuje nikakve oglase.

Provjerite imate li Node.js i Node Package Manager radi na vašem stroju. Napravite praznu mapu, zatim a paket.json datoteku i dodajte sljedeći JSON unutar datoteke:

{
"name": "web-scraper",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js"
},
"author": "",
"license": "MIT",
"dependencies": {
"cheerio": "^1.0.0-rc.12",
"express": "^4.18.2"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}

Nakon što to učinite, otvorite terminal i pokrenite:

npm i

Ovo bi trebalo instalirati potrebne ovisnosti koje trebate za izgradnju strugača. Ovi paketi uključuju Cheerio za raščlanjivanje HTML-a, ExpressJS za stvaranje poslužitelja i—kao razvojnu ovisnost—Nodemon, uslužni program koji prati promjene u projektu i automatski ponovno pokreće poslužitelj.

Postavljanje stvari i stvaranje potrebnih funkcija

Stvorite index.js iu toj datoteci kreirajte konstantnu varijablu pod nazivom "PORT". set LUKA na 5500 (ili koji god broj odaberete), zatim uvezite pakete Cheerio i Express.

const PORT = 5500;
const cheerio = require("cheerio");
const express = require("express");
const app = express();

Zatim definirajte tri varijable: url, html, i gotova stranica. set url na URL Hacker News.

const url = 'https://news.ycombinator.com';
let html;
let finishedPage;

Sada stvorite funkciju tzv getHeader() koji vraća neki HTML koji bi preglednik trebao prikazati.

functiongetHeader(){
return`

Stvaranje druge funkcije getScript() koji vraća neki JavaScript za pokretanje preglednika. Provjerite jeste li unijeli varijablu tip kao argument kad ga nazoveš.

functiongetScript(type){
return`