Si un site Web ne fournit pas une bonne API, votre prochain meilleur pari est de gratter son contenu. Cheerio et Express.js vous aideront à faire exactement cela.

Le web scraping est une technique qui permet d'obtenir des données d'un site web particulier. Les sites Web utilisent HTML pour décrire leur contenu. Si le HTML est propre et sémantique, il est facile de l'utiliser pour localiser des données utiles.

Vous utiliserez généralement un grattoir Web pour obtenir et surveiller les données et suivre les modifications futures de celles-ci.

Concepts jQuery à connaître avant d'utiliser Cheerio

jQuery est l'un des packages JavaScript les plus populaires qui existent. Il facilite le travail avec le Modèle d'objet de document (DOM), gérer les événements, l'animation, etc. Cheerio est un package de scraping Web qui s'appuie sur jQuery, partageant la même syntaxe et la même API, tout en facilitant l'analyse des documents HTML ou XML.

Avant d'apprendre à utiliser Cheerio, il est important de savoir comment sélectionner des éléments HTML avec jQuery. Heureusement, jQuery prend en charge la plupart des sélecteurs CSS3, ce qui facilite la récupération des éléments du DOM. Jetez un oeil au code suivant :

instagram viewer

$("#container");

Dans le bloc de code ci-dessus, jQuery sélectionne les éléments avec le identifiant de "contenant". Une implémentation similaire utilisant l'ancien JavaScript normal ressemblerait à ceci :

document.querySelectorAll("#container");

En comparant les deux derniers blocs de code, vous pouvez voir que le premier bloc de code est beaucoup plus facile à lire que le second. C'est la beauté de jQuery.

jQuery a également des méthodes utiles comme texte(), html(), et d'autres qui permettent de manipuler des éléments HTML. Il existe plusieurs méthodes que vous pouvez utiliser pour parcourir le DOM, comme parent(), frères et sœurs(), préc(), et suivant().

Le chaque() La méthode dans jQuery est très populaire dans de nombreux projets Cheerio. Il vous permet d'itérer sur des objets et des tableaux. La syntaxe pour le chaque() la méthode ressemble à ceci :

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

Dans le bloc de code ci-dessus, rappeler s'exécute pour chaque itération du tableau ou de l'argument d'objet.

Chargement HTML avec Cheerio

Pour commencer à analyser des données HTML ou XML avec Cheerio, vous pouvez utiliser le cheerio.load() méthode. Jetez un oeil à cet exemple:

const $ = cheerio.load('

Hello, world!

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

Ce bloc de code utilise le jQuery texte() méthode récupère le contenu textuel de la h1 élément. La syntaxe complète du charger() la méthode ressemble à ceci :

load(content, options, mode)

Le contenu Le paramètre fait référence aux données HTML ou XML réelles que vous transmettez charger() méthode. options est un objet optionnel qui peut modifier le comportement de la méthode. Par défaut, le charger() méthode introduit html, diriger, et corps éléments s'ils manquent. Si vous souhaitez arrêter ce comportement, assurez-vous que vous définissez mode à faux.

Gratter les nouvelles des hackers avec Cheerio

Le code utilisé dans ce projet est disponible dans un Référentiel GitHub et est libre d'utilisation sous la licence MIT.

Il est temps de combiner tout ce que vous avez appris jusqu'à présent et de créer un simple grattoir Web. Hacker News est un site Web populaire pour les entrepreneurs et les innovateurs. C'est également un site Web idéal pour exploiter vos compétences en matière de grattage Web, car il se charge rapidement, possède une interface très simple et ne diffuse aucune annonce.

Assurez-vous d'avoir Node.js et le Gestionnaire de packages de nœuds en cours d'exécution sur votre machine. Créez un dossier vide, puis un package.json et ajoutez le JSON suivant dans le fichier :

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

Après cela, ouvrez le terminal et exécutez :

npm i

Cela devrait installer les dépendances nécessaires dont vous avez besoin pour construire le grattoir. Ces packages incluent Cheerio pour l'analyse du code HTML, ExpressJS pour la création du serveur et, en tant que dépendance de développement,Nodemon, un utilitaire qui écoute les changements dans le projet et redémarre automatiquement le serveur.

Configurer les choses et créer les fonctions nécessaires

Créé un index.js fichier, et dans ce fichier, créez une variable constante appelée "PORT". Ensemble PORT à 5500 (ou quel que soit le nombre que vous choisissez), puis importez les packages Cheerio et Express respectivement.

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

Ensuite, définissez trois variables: URL, html, et TerminéPage. Ensemble URL à l'URL Hacker News.

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

Créez maintenant une fonction appelée getHeader() qui renvoie du code HTML que le navigateur doit afficher.

functiongetHeader(){
return`

La création d'une autre fonction getScript() qui renvoie du JavaScript pour que le navigateur s'exécute. Assurez-vous de passer dans la variable taper comme argument lorsque vous l'appelez.

functiongetScript(type){
return`