Εάν ένας ιστότοπος αποτυγχάνει να παρέχει ένα καλό API, το επόμενο καλύτερο στοίχημά σας είναι να διαγράψετε το περιεχόμενό του. Το Cheerio και το Express.js θα σας βοηθήσουν να κάνετε ακριβώς αυτό.

Το web scraping είναι μια τεχνική που καθιστά δυνατή τη λήψη δεδομένων από έναν συγκεκριμένο ιστότοπο. Οι ιστότοποι χρησιμοποιούν HTML για να περιγράψουν το περιεχόμενό τους. Εάν το HTML είναι καθαρό και σημασιολογικό, είναι εύκολο να το χρησιμοποιήσετε για να εντοπίσετε χρήσιμα δεδομένα.

Συνήθως θα χρησιμοποιείτε ένα web scraper για να λαμβάνετε και να παρακολουθείτε δεδομένα και να παρακολουθείτε μελλοντικές αλλαγές σε αυτά.

Έννοιες jQuery που αξίζει να γνωρίζετε πριν χρησιμοποιήσετε το Cheerio

Το jQuery είναι ένα από τα πιο δημοφιλή πακέτα JavaScript που υπάρχουν. Διευκολύνει την εργασία με το Μοντέλο αντικειμένου εγγράφου (DOM), χειρίζεται συμβάντα, κινούμενα σχέδια και άλλα. Το Cheerio είναι ένα πακέτο για απόξεση ιστού που βασίζεται στο jQuery—κοινοποιώντας την ίδια σύνταξη και API, ενώ διευκολύνει την ανάλυση εγγράφων HTML ή XML.

instagram viewer

Πριν μάθετε πώς να χρησιμοποιείτε το Cheerio, είναι σημαντικό να γνωρίζετε πώς να επιλέγετε στοιχεία HTML με το jQuery. Ευτυχώς, το jQuery υποστηρίζει τους περισσότερους επιλογείς CSS3, γεγονός που διευκολύνει την αρπαγή στοιχείων από το DOM. Ρίξτε μια ματιά στον παρακάτω κώδικα:

$("#container");

Στο μπλοκ κώδικα παραπάνω, το jQuery επιλέγει τα στοιχεία με το ταυτότητα του «κοντέινερ». Μια παρόμοια υλοποίηση χρησιμοποιώντας κανονική παλιά JavaScript θα μοιάζει κάπως έτσι:

document.querySelectorAll("#container");

Συγκρίνοντας τα δύο τελευταία μπλοκ κώδικα, μπορείτε να δείτε ότι το πρώτο μπλοκ κώδικα είναι πολύ πιο εύκολο στην ανάγνωση από το δεύτερο. Αυτή είναι η ομορφιά του jQuery.

Το jQuery έχει επίσης χρήσιμες μεθόδους όπως κείμενο(), html(), και πολλά άλλα που καθιστούν δυνατό τον χειρισμό στοιχείων HTML. Υπάρχουν πολλές μέθοδοι που μπορείτε να χρησιμοποιήσετε για να διασχίσετε το DOM, όπως μητρική εταιρεία(), αδέρφια (), prev(), και Επόμενο().

ο καθε() Η μέθοδος στο jQuery είναι πολύ δημοφιλής σε πολλά έργα Cheerio. Σας επιτρέπει να επαναλαμβάνετε αντικείμενα και πίνακες. Η σύνταξη για το καθε() η μέθοδος μοιάζει με αυτό:

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

Στο μπλοκ κωδικών παραπάνω, επανάκληση εκτελείται για κάθε επανάληψη του ορίσματος του πίνακα ή του αντικειμένου.

Φόρτωση HTML με Cheerio

Για να ξεκινήσετε την ανάλυση δεδομένων HTML ή XML με το Cheerio, μπορείτε να χρησιμοποιήσετε το cheerio.load() μέθοδος. Ρίξτε μια ματιά σε αυτό το παράδειγμα:

const $ = cheerio.load('

Hello, world!

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

Αυτό το μπλοκ κώδικα χρησιμοποιεί το jQuery κείμενο() μέθοδος ανακτά το περιεχόμενο κειμένου του h1 στοιχείο. Η πλήρης σύνταξη για το φορτώνω() η μέθοδος μοιάζει με αυτό:

load(content, options, mode)

ο περιεχόμενο Η παράμετρος αναφέρεται στα πραγματικά δεδομένα HTML ή XML που μεταβιβάζετε φορτώνω() μέθοδος. επιλογές είναι ένα προαιρετικό αντικείμενο που μπορεί να τροποποιήσει τη συμπεριφορά της μεθόδου. Από προεπιλογή, το φορτώνω() μέθοδος εισάγει html, κεφάλι, και σώμα στοιχεία εάν λείπουν. Εάν θέλετε να σταματήσετε αυτήν τη συμπεριφορά, βεβαιωθείτε ότι έχετε ορίσει τρόπος σε ψεύτικο.

Scraping Hacker News με το Cheerio

Ο κώδικας που χρησιμοποιείται σε αυτό το έργο είναι διαθέσιμος στο α Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.

Ήρθε η ώρα να συνδυάσετε όλα όσα έχετε μάθει μέχρι τώρα και να δημιουργήσετε ένα απλό web scraper. Το Hacker News είναι ένας δημοφιλής ιστότοπος για επιχειρηματίες και καινοτόμους. Είναι επίσης ένας τέλειος ιστότοπος για να αξιοποιήσετε τις δεξιότητές σας στο web scraping επειδή φορτώνει γρήγορα, έχει πολύ απλή διεπαφή και δεν προβάλλει διαφημίσεις.

Βεβαιωθείτε ότι έχετε Node.js και το Node Package Manager τρέχει στο μηχάνημά σας. Δημιουργήστε έναν κενό φάκελο και, στη συνέχεια, α πακέτο.json αρχείο και προσθέστε το ακόλουθο 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"
}
}

Αφού το κάνετε αυτό, ανοίξτε το τερματικό και εκτελέστε:

npm i

Αυτό θα πρέπει να εγκαταστήσει τις απαραίτητες εξαρτήσεις που χρειάζεστε για την κατασκευή του ξύστρα. Αυτά τα πακέτα περιλαμβάνουν το Cheerio για την ανάλυση του HTML, το ExpressJS για τη δημιουργία του διακομιστή και—ως εξάρτηση ανάπτυξης—Nodemon, ένα βοηθητικό πρόγραμμα που ακούει για αλλαγές στο έργο και επανεκκινεί αυτόματα τον διακομιστή.

Ρύθμιση πραγμάτων και δημιουργία των απαραίτητων λειτουργιών

Δημιουργήστε ένα index.js αρχείο, και σε αυτό το αρχείο, δημιουργήστε μια σταθερή μεταβλητή που ονομάζεται "PORT". Σειρά ΛΙΜΑΝΙ στο 5500 (ή οποιονδήποτε αριθμό επιλέξετε), στη συνέχεια εισάγετε τα πακέτα Cheerio και Express αντίστοιχα.

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

Στη συνέχεια, ορίστε τρεις μεταβλητές: url, html, και ολοκληρωμένη σελίδα. Σειρά url στη διεύθυνση URL των Ειδήσεων Χάκερ.

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

Τώρα δημιουργήστε μια συνάρτηση που ονομάζεται getHeader() που επιστρέφει κάποιο HTML που πρέπει να αποδώσει το πρόγραμμα περιήγησης.

functiongetHeader(){
return`

Δημιουργήστε μια άλλη λειτουργία getScript() που επιστρέφει κάποια JavaScript για εκτέλεση του προγράμματος περιήγησης. Φροντίστε να περάσετε τη μεταβλητή τύπος ως επιχείρημα όταν το αποκαλείς.

functiongetScript(type){
return`