Bir web sitesi iyi bir API sağlayamazsa, bir sonraki en iyi seçeneğiniz içeriğini kazımaktır. Cheerio ve Express.js tam da bunu yapmanıza yardımcı olacaktır.

Web kazıma, belirli bir web sitesinden veri almayı mümkün kılan bir tekniktir. Web siteleri, içeriklerini açıklamak için HTML kullanır. HTML temiz ve anlamsalsa, yararlı verileri bulmak için onu kullanmak kolaydır.

Verileri elde etmek ve izlemek ve bunlarda gelecekteki değişiklikleri izlemek için genellikle bir web kazıyıcı kullanırsınız.

Cheerio'yu Kullanmadan Önce Bilmeniz Gereken jQuery Kavramları

jQuery, var olan en popüler JavaScript paketlerinden biridir. ile çalışmayı kolaylaştırır. Belge Nesne Modeli (DOM), olayları, animasyonu ve daha fazlasını yönetin. Cheerio, HTML veya XML belgelerini ayrıştırmayı kolaylaştırırken, aynı sözdizimini ve API'yi paylaşan, jQuery üzerine kurulu bir web kazıma paketidir.

Cheerio'yu nasıl kullanacağınızı öğrenmeden önce, jQuery ile HTML öğelerini nasıl seçeceğinizi bilmek önemlidir. Neyse ki jQuery, DOM'dan öğeleri almayı kolaylaştıran çoğu CSS3 seçiciyi destekler. Aşağıdaki koda bir göz atın:

instagram viewer

$("#container");

Yukarıdaki kod bloğunda jQuery, elemanları şu şekilde seçer: İD "konteyner". Normal eski JavaScript kullanan benzer bir uygulama şuna benzer:

document.querySelectorAll("#container");

Son iki kod bloğunu karşılaştırdığınızda, önceki kod bloğunun okunmasının ikincisinden çok daha kolay olduğunu görebilirsiniz. Bu jQuery'nin güzelliğidir.

jQuery ayrıca aşağıdaki gibi yararlı yöntemlere sahiptir: metin(), html()ve HTML öğelerini değiştirmeyi mümkün kılan daha fazlası. DOM'da gezinmek için kullanabileceğiniz birkaç yöntem vardır, örneğin ebeveyn(), kardeşler(), önceki(), Ve Sonraki().

bu her biri() jQuery'deki yöntem birçok Cheerio projesinde çok popülerdir. Nesneler ve diziler üzerinde yineleme yapmanızı sağlar. için sözdizimi her biri() yöntem şöyle görünür:

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

Yukarıdaki kod bloğunda, geri çağırmak dizi veya nesne bağımsız değişkeninin her yinelemesi için çalışır.

Cheerio ile HTML Yükleme

Cheerio ile HTML veya XML verilerini ayrıştırmaya başlamak için tezahürat.yük() yöntem. Bu örneğe bir göz atın:

const $ = cheerio.load('

Hello, world!

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

Bu kod bloğu, jQuery'yi kullanır metin() yöntemi, metin içeriğini alır h1 eleman. için tam sözdizimi yük() yöntem şöyle görünür:

load(content, options, mode)

bu içerik parametresi, ilettiğiniz gerçek HTML veya XML verilerini ifade eder. yük() yöntem. seçenekler yöntemin davranışını değiştirebilen isteğe bağlı bir nesnedir. varsayılan olarak, yük() yöntem tanıtır html, KAFA, Ve vücut öğeler eksikse. Bu davranışı durdurmak istiyorsanız, ayarladığınızdan emin olun. mod yanlış.

Cheerio ile Hacker Haberlerini Scraping

Bu projede kullanılan kod bir GitHub deposu ve MIT lisansı altında ücretsiz olarak kullanabilirsiniz.

Şimdiye kadar öğrendiğiniz her şeyi birleştirmenin ve basit bir web kazıyıcı oluşturmanın zamanı geldi. Hacker News, girişimciler ve yenilikçiler için popüler bir web sitesidir. Hızlı yüklendiği, çok basit bir arayüze sahip olduğu ve herhangi bir reklam sunmadığı için web kazıma becerilerinizi kullanmak için de mükemmel bir web sitesidir.

Node.js'ye sahip olduğunuzdan emin olun ve Düğüm Paket Yöneticisi makinenizde çalışıyor. Boş bir klasör oluşturun, ardından bir paket.json dosyasını açın ve dosyanın içine aşağıdaki JSON'u ekleyin:

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

Bunu yaptıktan sonra terminali açın ve çalıştırın:

npm i

Bu, kazıyıcıyı oluşturmak için ihtiyacınız olan gerekli bağımlılıkları kurmalıdır. Bu paketler, HTML'yi ayrıştırmak için Cheerio'yu, sunucuyu oluşturmak için ExpressJS'yi ve -bir geliştirme bağımlılığı olarak- içerir.Değişiklikleri dinleyen bir yardımcı program olan Nodemon projede ve sunucuyu otomatik olarak yeniden başlatır.

Ayarların Yapılması ve Gerekli Fonksiyonların Oluşturulması

Oluşturduğunuz bir index.js dosya ve bu dosyada "PORT" adlı sabit bir değişken oluşturun. Ayarlamak LİMAN 5500'e (veya hangi sayıyı seçerseniz seçin), ardından sırasıyla Cheerio ve Express paketlerini içe aktarın.

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

Ardından, üç değişken tanımlayın: url, html, Ve bitmişSayfa. Ayarlamak url Hacker Haberleri URL'sine.

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

Şimdi adında bir işlev oluşturun. getHeader() bu, tarayıcının oluşturması gereken bazı HTML'leri döndürür.

functiongetHeader(){
return`

Başka bir işlev oluştur getScript() bu, tarayıcının çalışması için bazı JavaScript'leri döndürür. Değişkeni girdiğinizden emin olun tip çağırdığınızda bir argüman olarak.

functiongetScript(type){
return`