Podemos usar los argumentos de la terminal para distinguir entre las tres opciones que hemos implementado en nuestro scraper. Hay opciones que puedes usar para analizar los argumentos de la terminal en Node, pero me gusta mantener las cosas sencillas. Por eso usaremos process.argv, que genera una matriz de argumentos. Ten en cuenta que los dos primeros elementos de esta matriz son «node» y el nombre de tu script. Por ejemplo, si ejecutas `node scraper.js raw_html`, la matriz de argumentos tendrá este aspecto:
[
'/usr/local/bin/node',
'path_to_directory/scraper.js',
'raw_html'
]
Ignorando los dos primeros elementos, utilizaremos la siguiente lógica:
- el primer argumento especificará la función que queremos ejecutar;
- el segundo apuntará a nuestro objetivo (el sitio web que queremos rastrear);
- el tercero apuntará al servidor proxy;
- y el cuarto apuntará al selector CSS.
Así pues, el comando para ejecutar nuestro rastreador debería tener este aspecto:
~ » node scraper.js raw_html https://webscrapingapi.com http://1.255.134.136:3128
Esto simplemente significa extraer el HTML sin procesar de la página de inicio de WebScrapingAPI y utilizar http://1.255.134.136 como middleware de proxy. Ahora, la parte final consiste en programar la lógica para estos argumentos, de modo que nuestro código entienda el comando de ejecución:
const ACTION = process.argv[2]
const TARGET = process.argv[3]
const PROXY = process.argv[4]
const SELECTOR = process.argv[5]
switch (ACTION) {
case 'raw_html':
console.log(await raw_html(PROXY, TARGET))
break
case 'json_response':
console.log(await json_response(PROXY, TARGET))
break
case 'select_css':
SELECTOR ? console.log(await select_css(PROXY, TARGET, SELECTOR)) : console.log('Please specify a CSS selector!')
break
default:
conssole.log('Please choose between `raw_html`, `json_response` and `select_css`')
}
Y eso es básicamente todo. ¡Enhorabuena! Has creado con éxito un rastreador web totalmente funcional utilizando un proxy con node-fetch. Ahora te reto a que añadas más funcionalidades a este rastreador, crees tu propia versión y la utilices como un activo en tu portafolio personal.