Advertisement
silasvasconcelos

Web Crawler em Javascript (NodeJS)

Sep 9th, 2019
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Framework usado: https://www.npmjs.com/package/crawler#get-started
  2. // Rondar o comando: npm install crawler
  3. // Rodar o comando: node nome-do-arquivo.js
  4.  
  5. var Crawler = require("crawler");
  6. var fs = require('fs');
  7. var request = require('request');
  8.  
  9. var pasta_principal = 'imagens_baixadas/';
  10.  
  11. // Cria a  pasta se não existir
  12. if (!fs.existsSync(pasta_principal)) {
  13.     fs.mkdirSync(pasta_principal);
  14. }
  15.  
  16. var c = new Crawler({
  17.     maxConnections: 10,
  18.     // Essa função sera chamada para o consumo da página
  19.     callback: function (error, res, done) {
  20.         if (error) {
  21.             console.log(error);
  22.         } else {
  23.             var site_origin = res.socket.servername;
  24.             var caminho_para_arquivos = pasta_principal + site_origin + '/';
  25.             var $ = res.$;
  26.  
  27.             // Cria a  pasta se não existir
  28.             if (!fs.existsSync(caminho_para_arquivos)) {
  29.                 fs.mkdirSync(caminho_para_arquivos);
  30.             }
  31.  
  32.             // O $ é  o seletor padrão
  33.             // Use o seletor $ para consultar (campturar) os itens da página.
  34.             $('img').each(function (k, img) {
  35.  
  36.                 var url_imagem = img.attribs.src;
  37.                 var nome_arquivo = String(img.attribs.alt || img.attribs.title || url_imagem).replace(/[\W\s]/g, '-');
  38.  
  39.                 request.get({ url: url_imagem, encoding: 'binary' }, function (err, response, body) {
  40.                     var tipo_imagem = response.headers['content-type'].split('/')[1] || 'jpg';
  41.                     var nome_arquivo_disco = nome_arquivo + '.' + tipo_imagem;
  42.                     var caminho_arquivo = caminho_para_arquivos + nome_arquivo_disco;
  43.  
  44.                     fs.writeFile(caminho_arquivo, body, 'binary', function (err) {
  45.                         if (err) {
  46.                             console.log(err);
  47.                         } else {
  48.                             console.log(' ');
  49.                             console.log("Arquivo salvo com sucesso!");
  50.                             console.log("Local: " + caminho_arquivo);
  51.                             console.log(' ');
  52.                         }
  53.                     });
  54.                 });
  55.  
  56.             });
  57.         }
  58.         done();
  59.     }
  60. });
  61.  
  62. // Url para consulta
  63. //c.queue('https://g1.globo.com/globonews/conta-corrente/');
  64. c.queue('https://noticias.uol.com.br/');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement