UNPKG

consultas-doc-peru

Version:

Consulta de documentos a las diferentes entidades publicas del gobierno del Perú.

122 lines (118 loc) 4.61 kB
import cheerio from 'cheerio'; import { Dictionary } from 'typescript-collections'; import { IParseHtml } from './parseHtml.interface'; import { Departamento } from './departamento' import { Direccion } from './direccion'; import { RazonSocial } from './razonSocial'; export class ParseHtml implements IParseHtml { /** * * @param string dato * @return RazonSocial * */ getRazonSocial(dato: string): RazonSocial{ const razonSocial = new RazonSocial(); let _dato: string[] = dato.split('-').map((dato: string) => dato.trim()); let _rs: string; if (_dato.length === 3){ _rs = `${_dato[1]} - ${_dato[2]}`; }else{ _rs = _dato[1]; } razonSocial.Ruc = _dato[0]; razonSocial.RazonSocial = _rs; return razonSocial; } /** * * @param string departamento * @return Departamento * */ getDepartamento(departamento: string): Departamento{ const _departamento = new Departamento(); switch(departamento.toUpperCase()){ case 'DIOS': _departamento.Departamento = 'MADRE DE DIOS'; _departamento.Cantidad = 3; break; case 'MARTIN': _departamento.Departamento = 'SAN MARTIN'; _departamento.Cantidad = 2; break; case 'LIBERTAD': _departamento.Departamento = 'LA LIBERTAD'; _departamento.Cantidad = 2; break; default: _departamento.Departamento = departamento; _departamento.Cantidad = 1; break; } return _departamento; } /** * * @param string direccionCompleta * @return Direccion * */ getDireccion(direccionCompleta: string): Direccion{ const direccion = new Direccion(); let _direccion: string[] = direccionCompleta.split('-').map((dato: string) => dato.trim()); let _direccionCompleta: string[] = direccionCompleta.split('-').map((dato: string) => dato.trim()); let _ultimoElemento: string; let _docimilio: string; let _splitDomicilio: string[] if (_direccionCompleta.length != 3){ _direccionCompleta.splice(2); _docimilio = _direccionCompleta.join(' '); _splitDomicilio = _docimilio.split(' '); _ultimoElemento = _splitDomicilio[_splitDomicilio.length -1]; }else{ _docimilio = _direccionCompleta[_direccionCompleta.length - 3]; _splitDomicilio = _docimilio.split(' '); _ultimoElemento = _splitDomicilio[_splitDomicilio.length-1]; } let { Cantidad, Departamento } = this.getDepartamento(_ultimoElemento); _splitDomicilio.splice(-1*Cantidad); direccion.Departamento = Departamento; direccion.Provincia = _direccion[_direccion.length - 1]; direccion.Distrito = _direccion[_direccion.length - 2] direccion.Domicilio = _splitDomicilio.join(' ') return direccion; } /** * * @param string pagina * @return Dictionary<string,any> * */ parseHtml(pagina: string): Dictionary<string,any>{ const respuesta = new Dictionary<string, any>(); const $ = cheerio.load(pagina); const table = $('.form-table').eq(2).find('tbody'); const html = table.first().children("tr").find("td[class=bg]").html(); if(!html){ respuesta.setValue('ERROR', { Estado : 'ERROR', Respuesta : $('.form-table').eq(1).children('tbody').find('tr .bg').text() }) return respuesta; } table.find('tr .bg').each((i, el)=>{ let value:string[] = $(el).text().split('\n').map<string>((elemento: any) => { if(elemento.trim() != '') return elemento.replace(/[ \n\t]+/g, " ").trim() }).filter((elemento: any) => { return elemento !== undefined }); let key: string = $(el).prev().text().replace(/[ :\n\t]+/g, " ").trim(); let vl: any = value.length <=1 ? value.join() : value; respuesta.setValue(key, vl); }); return respuesta; } }