def exp_pag_sencilla_sub(self, metadata, sub=None): if sub: self.driver = sub persona = Person() for dato in metadata['info']: result_data = self.explotar_tipo(metadata['info'][dato]) persona.add_attribute(dato, result_data) persona.set_timestamp() if persona.name: return (persona.persona) else: return {}
def exp_pag_sencilla(metadata, url): driver = dcrawl() driver.setup(url, 2) persona = Person() new_version = Pagina(url, metadata['entidad']) for dato in metadata['info']: result_data = driver.explotar_tipo(metadata['info'][dato]) persona.add_attribute(dato, result_data) driver.close() persona.set_timestamp() if persona.name: new_version.agregar_persona(persona.persona) new_version.finalizar() return new_version
def BuscarRegistro(self, enlace, link_parse): persona = Person() new_version = Pagina(link_parse, self.metadata['entidad']) estudios = [] experiencia = [] try: self.driver.execute_script(enlace) persona.add_attribute( 'nombre', self.driver.explotar_tipo( "//span[@id='ctl00_MainContent_lblnombresapellidos'][text()]" )) persona.add_attribute( 't_id', self.driver.explotar_tipo( "//span[@id='ctl00_MainContent_lbltipoidentificacion'][text()]" )) persona.add_attribute( 'n_id', self.driver.explotar_tipo( "//span[@id='ctl00_MainContent_lblnumeroidentificacion'][text()]" )) persona.add_attribute( 'f_pub', self.driver.explotar_tipo( "//span[@id='ctl00_MainContent_lblfechapublicacion'][text()]" )) persona.add_attribute( 'cargo_postulacion', self.driver.explotar_tipo( "//span[@id='ctl00_MainContent_lblcargo'][text()]")) persona.add_attribute( 'entidad', self.driver.explotar_tipo( "//span[@id='ctl00_MainContent_lblentidad'][text()]")) persona.add_attribute( 'sector', self.driver.explotar_tipo( "//span[@id='ctl00_MainContent_lblsector'][text()]")) item_estudios = self.driver.getrows( "//tr[starts-with(@id,'ctl00_MainContent_gvwCont_DXDataRow')]") for estudio in item_estudios: det_estudio = {} tds = estudio.find_elements_by_xpath( ".//td[@class='dxgv'][text()]") det_estudio['nivel'] = tds[0].text det_estudio['estado'] = tds[1].text det_estudio['titulo'] = tds[2].text det_estudio['inst'] = tds[3].text estudios.append(det_estudio) persona.add_attribute('estudios', estudios) item_experiencia = self.driver.getrows( "//tr[starts-with(@id,'ctl00_MainContent_gvwCont0_DXDataRow')]" ) for regExperienciaL in item_experiencia: det_experiencia = {} tds = regExperienciaL.find_elements_by_xpath( ".//td[@class='dxgv'][text()]") det_experiencia['entidad'] = tds[0].text det_experiencia['f_inicio'] = tds[1].text det_experiencia['f_fin'] = tds[2].text det_experiencia['cargo'] = tds[3].text experiencia.append(det_experiencia) persona.add_attribute('experiencia', experiencia) persona.set_timestamp() if persona.name: new_version.agregar_persona(persona.persona) new_version.finalizar() self.btnRegresar = self.driver.getelement(self.xpathRegresar) if self.btnRegresar: self.btnRegresar.click() self.reiniciarBusqueda() except Exception as e: pass return new_version
def extraer_hv(self, link): estudios = [] experiencia = [] persona = Person() self.driver.get(link) persona.add_name( self.driver.gettext( "//span[@class='nombre_funcionario']|//p[@class='nombre_funcionario']" )) persona.add_attribute( 'cargo', self.driver.gettext( "//span[@class='cargo_funcionario']|//p[@class='cargo_funcionario']" )) persona.add_attribute( 'institucion', self.driver.gettext( "//span[@class='institucion_funcionario']|//p[@class='institucion_funcionario']" )) persona.add_attribute( 'email', self.driver.gettext( "//span[@class='texto_detalle_directorio'][1]|//p[@class='texto_detalle_directorio'][1]" )) persona.add_attribute( 'telefono', self.driver.gettext( "//span[@class='texto_detalle_directorio'][2]|//p[@class='texto_detalle_directorio'][2]" )) persona.add_attribute( 'l_nac', self.driver.gettext( ".//*[@class='zona_directorio_detail']/span[4][text()]")) try: item_estudios = self.driver.getrows( ".//*[@class='zona_directorio_detail']/ul/li[text()]") item_estudios = [(x.text).split('-') for x in item_estudios] for item in item_estudios: det_estudio = {} if len(item) == 3: det_estudio['nivel'], det_estudio['titulo'], det_estudio[ 'estado'] = item det_estudio['nivel'] = to_unicode_or_bust( det_estudio['nivel']) det_estudio['titulo'] = to_unicode_or_bust( det_estudio['titulo']) det_estudio['estado'] = to_unicode_or_bust( det_estudio['estado']) else: det_estudio['nivel'] = item estudios.append(det_estudio) persona.add_attribute('estudios', estudios) except Exception as e: print "No tiene estudios registrados", e try: item_experiencias = self.driver.getrows( ".//div[@class='zona_directorio_detail']/table[@class='directorio_tabla']/tbody/tr[position() > 1]" ) for exp in item_experiencias: det_experiencia = {} tds = [ x.text for x in (exp.find_elements_by_xpath( ".//td[@class='directorio_td_data'][text()]")) ] det_experiencia['cargo'], det_experiencia[ 'entidad'], det_experiencia['f_inicio'], det_experiencia[ 'f_fin'] = tds det_experiencia['cargo'] = to_unicode_or_bust( det_estudio['cargo']) det_experiencia['entidad'] = to_unicode_or_bust( det_estudio['entidad']) det_experiencia['f_inicio'] = to_unicode_or_bust( det_estudio['f_inicio']) det_experiencia['f_fin'] = to_unicode_or_bust( det_estudio['f_fin']) experiencia.append(det_experiencia) persona.add_attribute('experiencia', experiencia) except Exception as e: print "No tiene experiencia laboral registrada", e self.driver.back() return persona