¿Cómo obtener repositorios de GitHub de tendencia usando Node.js?

Acercarse:

  • Obtenga toda la página HTML y guárdela como una string usando el paquete de solicitud.
  • Cargue HTML en Cheerio y busque los selectores de CSS para extraer los detalles de los repositorios.

Uso del paquete de
solicitud: paquete de solicitud : la solicitud está diseñada para ser la forma más sencilla posible de realizar llamadas http. Es compatible con HTTPS y sigue los redireccionamientos de forma predeterminada.

Instalación del paquete de solicitud:

$ npm install request

Nota: Ejecute este comando en la carpeta actual, donde se encuentra el archivo ‘app.js’.

Sintaxis para la solicitud:

request(url, (error, response, body) => {
    if(!error && response.statusCode == 200) {
        statements to be executed.
    }
}

Parámetros:

  • url: punto final de la API al que se realiza la solicitud.
  • respuesta: los códigos de estado de respuesta HTTP indican si una solicitud HTTP específica se ha completado con éxito.
  • cuerpo: datos de respuesta.

Uso del paquete
Cheerio: Paquete Cheerio: Implementación rápida, flexible y eficiente del núcleo jQuery diseñado específicamente para el servidor.

Instalación del paquete Cheerio:

$ npm install cheerio

Nota: Ejecute este comando en la carpeta actual, donde se encuentra el archivo ‘app.js’.

Sintaxis de cheerio:

const cheerio = require('cheerio')
const $ = cheerio.load(HTMLString)
 
$(CSS Selector).text('Hello there!')
$.html()
// Import request package
const request = require('request');
  
// Import cheerio package
const cheerio = require('cheerio');
  
// Github Trending Page URL
const url = 'https://github.com/trending';
  
// Get request to the URL
request.get(url, (error, response, body) => {
  
    // If the response code is 200 and
    // there is no error
    if (!error && response.statusCode == 200) {
  
        // Load HTML string into cheerio
        const $ = cheerio.load(body);
  
        // Below are the CSS selectors to 
        // fetch the data required
        let temp = $('.Box-row')
        let repos = $('.h3.lh-condensed a');
        let data = [];
        for (let i = 0; i < repos.length; i++) {
            let reponame = $(temp[i])
                .find('.h3.lh-condensed a')
                .text().replace(
                /[\n\r]+|[\s]{2, }/g, ' ').trim();
  
            let repolanguage = $(temp[i])
                .find(
'.f6.text-gray.mt-2 span span[itemprop="programmingLanguage"]')
                .text()
                .replace(/[\n\r]+|[\s]{2, }/g, ' ').trim();
  
            let repostars = $(temp[i])
                .find(
'.f6.text-gray.mt-2 .muted-link.d-inline-block.mr-3')
                .text()
                .replace(/[\n\r]+|[\s]{2, }/g, ' ').trim();
  
            // Push the fetched data into an object
            data.push({
                'Repository': reponame,
                'Language': repolanguage,
                'Stars/Forks': repostars
            })
        }
  
        // Display the Object created using console.table
        console.table(data)
    }
    else {
        console.log("Unable to fetch data from github");
    }
});

Producción:

Publicación traducida automáticamente

Artículo escrito por manoj_n y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *