Red de conocimiento informático - Material del sitio web - Cómo usar nodejs para crear un programa rastreador

Cómo usar nodejs para crear un programa rastreador

Todo el proceso de creación de un programa rastreador con NodeJS:

1. Crear un proyecto craelr-demo

Cree un proyecto Express y luego agregue Todo. El contenido se ha eliminado porque no es necesario mostrarlo en la web por el momento. Por supuesto, también podemos usar npm install express en una carpeta vacía para usar las funciones Express requeridas.

2. Análisis del sitio de destino

Como se muestra en la figura, esto es parte de la etiqueta div en la página de inicio de CNode. Utiliza esta serie de identificadores y clases para localizar la información requerida. .

3. Utilice superagente para obtener datos de origen

Superagent es una biblioteca Http que utiliza API ajax. Su uso es casi el mismo que el de jQuery. La solicitud de obtención iniciada a través de él se genera en. el resultado de la devolución de llamada.

El código es el siguiente:

var express = require('express');

var url = require('url'); la URL de operación

var superagent = require('superagent'); // No olvides npm install para estas tres dependencias externas

var cheerio = require('cheerio');

var eventproxy = require('eventproxy');

var targetUrl = 'odejs.org/';

superagent.get(targetUrl)

.end(function (err, res) {

console.log(res);

});

4. análisis

cheerio es una función jQuery del lado del servidor que primero carga el HTML usando su .load() y luego filtra los elementos mediante selectores CSS.

El código es el siguiente:

var $ = cheerio.load(res.text);

//Filtrar datos a través del selector CSS

$('#topic_list .topic_title').each(función (idx, elemento) {

console.log(elemento);

});

5. Utilice eventproxy para rastrear cada tema simultáneamente

Eventproxy es una solución a este problema utilizando un enfoque de eventos (paralelo). Cuando se completa todo el raspado, eventproxy recibe el mensaje del evento y automáticamente llama al controlador por usted.

El código es el siguiente:

//Paso 1: Obtener una instancia de eventproxy

var ep = new eventproxy();

// Paso 2: Definir la función de devolución de llamada para escuchar eventos.

//El método after se utiliza para monitoreo repetido

//Parámetros: nombre de evento (Cadena) nombre del evento, tiempos (Número) número de tiempos de monitoreo, función de devolución de llamada

ep.after('topic_html', topicUrls. length, function(topics){

// temas es una matriz que contiene datos de ep.emit('topic_html', topicUrls. length, function (temas){

) emit('topic_html', par) 40 veces

//.map

temas = temas.map( function( topicPair) {

// Usa cheerio

var topicUrl = topicPair[0];

var topicHtml = topicPair[1];

var $ = cheerio.load( topicHtml);

return ({

título: $('.topic_full_title').text().trim(),

href: topicUrl,

comentario1: $('.reply_content ').eq(0).text().trim()

});

});

//resultado

console.log('resultado:');

console.log(topics);

});

// Paso 3: Determinar el

topicUrls.forEach(function (topicUrl) {

superagent.get(topicUrl)

.end(function (err, res) {

console.log('fetch ' + topicUrl + ' exitoso');

ep.emit( ​​'topic_html ', [topicUrl, res.text]);

});

});

6. Obtener análisis de resultados