Če spletno mesto ne zagotavlja dobrega API-ja, je vaša naslednja najboljša stava, da postrgate njegovo vsebino. Cheerio in Express.js vam bosta pri tem pomagala.

Spletno strganje je tehnika, ki omogoča pridobivanje podatkov z določenega spletnega mesta. Spletna mesta uporabljajo HTML za opis svoje vsebine. Če je HTML čist in semantičen, ga je enostavno uporabiti za iskanje uporabnih podatkov.

Običajno boste uporabili spletno strgalo za pridobivanje in spremljanje podatkov ter sledenje njihovim prihodnjim spremembam.

Koncepti jQuery, ki jih je vredno poznati, preden uporabite Cheerio

jQuery je eden najbolj priljubljenih obstoječih paketov JavaScript. Omogoča lažje delo z Objektni model dokumenta (DOM), obravnava dogodke, animacijo in drugo. Cheerio je paket za spletno strganje, ki nadgrajuje jQuery – deli isto sintakso in API, hkrati pa olajša razčlenjevanje dokumentov HTML ali XML.

Preden se naučite uporabljati Cheerio, je pomembno vedeti, kako izbrati elemente HTML z jQuery. Na srečo jQuery podpira večino izbirnikov CSS3, kar olajša zajemanje elementov iz DOM. Oglejte si naslednjo kodo:

$("#container");

V zgornjem kodnem bloku jQuery izbere elemente z id "posode". Podobna izvedba z običajnim starim JavaScriptom bi izgledala nekako takole:

document.querySelectorAll("#container");

Če primerjate zadnja dva kodna bloka, lahko vidite, da je prvi kodni blok veliko lažje brati kot slednji. To je lepota jQueryja.

jQuery ima tudi uporabne metode, kot je besedilo(), html()in več, ki omogočajo manipulacijo elementov HTML. Obstaja več metod, ki jih lahko uporabite za prečkanje DOM-a, na primer starš(), bratje in sestre (), prejšnji(), in Naslednji().

The vsak() metoda v jQuery je zelo priljubljena v številnih projektih Cheerio. Omogoča vam iteracijo po predmetih in nizih. Sintaksa za vsak() metoda izgleda takole:

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

V zgornjem kodnem bloku poklicati nazaj zažene za vsako ponovitev argumenta matrike ali objekta.

Nalaganje HTML s Cheerio

Če želite začeti razčlenjevati podatke HTML ali XML s Cheerio, lahko uporabite cheerio.load() metoda. Oglejte si ta primer:

const $ = cheerio.load('

Hello, world!

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

Ta kodni blok uporablja jQuery besedilo() metoda pridobi besedilno vsebino h1 element. Celotna sintaksa za naloži () metoda izgleda takole:

load(content, options, mode)

The vsebino parameter se nanaša na dejanske podatke HTML ali XML, ki jih posredujete naloži () metoda. opcije je neobvezen objekt, ki lahko spremeni vedenje metode. Privzeto je naloži () metoda uvaja html, glavo, in telo elemente, če manjkajo. Če želite ustaviti to vedenje, se prepričajte, da ste nastavili način na napačno.

Strganje novic o hekerjih s Cheerio

Koda, uporabljena v tem projektu, je na voljo v a Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.

Čas je, da združite vse, kar ste se do sedaj naučili, in ustvarite preprosto spletno strgalo. Hacker News je priljubljeno spletno mesto za podjetnike in inovatorje. Je tudi popolno spletno mesto, na katerem lahko izkoristite svoje veščine spletnega strganja, saj se hitro nalaga, ima zelo preprost vmesnik in ne prikazuje nobenih oglasov.

Preverite, ali imate Node.js in Node Package Manager teče na vašem računalniku. Ustvarite prazno mapo, nato a package.json in v datoteko dodajte naslednji JSON:

{
"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"
}
}

Po tem odprite terminal in zaženite:

npm i

To bi moralo namestiti potrebne odvisnosti, ki jih potrebujete za izdelavo strgala. Ti paketi vključujejo Cheerio za razčlenjevanje HTML-ja, ExpressJS za ustvarjanje strežnika in – kot razvojno odvisnost –Nodemon, pripomoček, ki posluša spremembe v projektu in samodejno znova zažene strežnik.

Nastavitev stvari in ustvarjanje potrebnih funkcij

Ustvarite index.js in v tej datoteki ustvarite konstantno spremenljivko z imenom "PORT". Set PORT na 5500 (ali katero koli številko, ki jo izberete), nato uvozite paketa Cheerio oziroma Express.

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

Nato definirajte tri spremenljivke: url, html, in končana stran. Set url na URL naslova Hacker News.

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

Zdaj ustvarite funkcijo, imenovano getHeader() ki vrne nekaj HTML-ja, ki bi ga moral upodobiti brskalnik.

functiongetHeader(){
return`

Ustvari drugo funkcijo getScript() ki vrne nekaj JavaScripta za zagon brskalnika. Prepričajte se, da ste posredovali spremenljivko vrsta kot argument, ko ga imenuješ.

functiongetScript(type){
return`