def obtener_ofertas(): print "Obtener base de datos" ofertas_db = mongodb.get_db(database_ip, database_port, database_ofertas) requisitos_db = mongodb.get_db(database_ip, database_port, database_requisitos) imprescindible_elements = mongodb.get_element(requisitos_db, {"nivReq": "imprescindible"}) competencias_elements = mongodb.get_element(requisitos_db, {"nivReq": "competencias"}) competencias = [] for compet in competencias_elements: for values in compet['value']: competencias.append(values) imprescindible = [] for impresc in imprescindible_elements: for values in impresc['value']: imprescindible.append(values) print "Obtener ofertas de Uvigo" ofertas_uvigo = scrapping_uvigo.get_uvigo(competencias, imprescindible) for oferta_uvigo in ofertas_uvigo: mongodb.add_update_element(ofertas_db, oferta_uvigo) print "Obtener ofertas de Infojobs" ofertas_infojobs = infojobs.get_infojobs(competencias, imprescindible) for each_oferta in ofertas_infojobs: mongodb.add_update_element(ofertas_db, each_oferta) return
def enriquecimiento(): database_ip = "52.208.8.144" database_port = 8080 print "Inicio enriquecimiento ofertas" colOfer = mongodb.get_db(database_ip, database_port, "ofertas") colTit = mongodb.get_db(database_ip, database_port, "titulos") # rellenar la experiencia de aquellas que no lo tengan # (no actualiza las que ya tienen un valor -> el objetivo es completar, no inventar) docs = colOfer.find({'experiencia_min': {'$type': 10}}) cont = 0 print("Inicio experiencia") for doc in docs: Gen.generarExperiencia(colOfer, doc) cont += 1 print("Inicio relaciones") Emp.relacionadas(colOfer, colTit) return
def validation(object): _id = object.get("_id", None) value = object.get(name, None) if value == None: return True db = mongodb.get_db() _collection = db[collection] item = _collection.find_one({name : value}) if not item: return True if str(item["_id"]) == _id: return True raise exceptions.ValidationInternalError(name, "value is duplicate")
def buscar(email): db_user = mongodb.get_db(database_ip, database_port, database_usuarios) usuario_db = db_user.find_one({'email': email}) if usuario_db is None: print "Usuario no encontrado" return ofertas = Relevancia.get_relevancia(usuario_db, Filtrar_ofertas.get_ofertas(usuario_db)) ofertas = sorted(ofertas, key=operator.itemgetter("nota_user"), reverse=True) print "Estas son las ofertas que hemos seleccionado apra ti" print "" for offers in ofertas: print str(offers.get("nota_user"))+" - "+offers.get("url") print "" return
def _increment(cls, name): _name = cls._name() + ":" + name db = mongodb.get_db() value = db.counters.find_and_modify( query = { "_id" : _name }, update = { "$inc" : { "seq" : 1 } }, upsert = True ) value = value or db.counters.find_one({ "_id" : _name }) return value["seq"]
def get_linkedin_info(): db_requisitos = mongodb.get_db(database_ip, database_port, database_requisitos) habilidadesDB, competenciasDB = __get_requisitos(db_requisitos) linkedin_conection, access_token = __conect_to_linkedin() print "Conectado al perfil de linkedin\n Obteniendo datos" nombre, apellidos = __get_nombre(linkedin_conection, access_token) ciudad = __get_localidad(linkedin_conection, access_token) habilidades_dict, competencias_dict, habilidadesDB, competenciasDB = __get_skills_linkedin( linkedin_conection, access_token, habilidadesDB, competenciasDB) empresas, habilidades_dict = __get_empresas(linkedin_conection, access_token, habilidades_dict, habilidadesDB) email = __get_email(linkedin_conection, access_token) idiomas = __get_idiomas(linkedin_conection, access_token) estudios_dict, nivel_titulacion = __get_estudios(linkedin_conection, access_token) # creamos la entidad usuario print "Datos Obtenidos\nGuardando..." db_user = mongodb.get_db(database_ip, database_port, database_usuarios) desplazamiento = raw_input( "Cuanto estarias dispuesto a desplazarte(0(localidad)-3(pais)):") usuario_db = db_user.find_one({'email': email}) usuario = None if usuario_db is not None: print "Usuario encontrado\nActualizando..." usuario = Users.Users(nombre, apellidos, email) usuario.id = usuario_db['_id'] usuario.ciudad = usuario_db['ciudad'] usuario.idiomas = usuario_db['idiomas'] usuario.nivel_titulacion = usuario_db['nivel_titulacion'] usuario.competencias = usuario_db['competencias'] usuario.habilidades = usuario_db['habilidades'] usuario.estudios = usuario_db['estudios'] usuario.empresas = usuario_db['empresas'] else: usuario = Users.Users(nombre, apellidos, email) usuario.ciudad = ciudad usuario.email = email usuario.idiomas = idiomas usuario.desplazamiento = int(desplazamiento) usuario.nivel_titulacion = nivel_titulacion if usuario.competencias is None: usuario.competencias = competencias_dict else: usuario.competencias.update(competencias_dict) if usuario.habilidades is None: usuario.habilidades = habilidades_dict else: usuario.habilidades.update(habilidades_dict) if usuario.estudios is None: usuario.estudios = estudios_dict else: for estudio in estudios_dict: if estudio not in usuario.estudios: usuario.estudios.append(estudio) if usuario.empresas is None: usuario.empresas = empresas else: for empresa in empresas: if empresa not in usuario.empresas: usuario.empresas.append(empresa) mongodb.add_update_element(db_user, usuario.toDBCollection()) print "Usuario Guardado: " + nombre + " " + apellidos return
def __main(): __actualizar_localizacion( mongodb.get_db(__database_ip, __database_port, __database_ofertas)) # actualizar_localizacion(mongodb.get_db(database_ip, database_port, database_usuarios)) return
def actualizar_localizacion_usuarios(): print "Actualizando localizaciones" __actualizar_localizacion( mongodb.get_db(__database_ip, __database_port, __database_usuarios)) print "Localizaciones actualizadas" return
import mongodb db = mongodb.get_db() def find(): table = db.boys return table.find()
def get_linkedin_info(): db_requisitos = mongodb.get_db(database_ip, database_port, database_requisitos) habilidadesDB, competenciasDB = __get_requisitos(db_requisitos) linkedin_conection, access_token = __conect_to_linkedin() print "Conectado al perfil de linkedin\n Obteniendo datos" nombre, apellidos = __get_nombre(linkedin_conection, access_token) ciudad = __get_localidad(linkedin_conection, access_token) habilidades_dict, competencias_dict, habilidadesDB, competenciasDB = __get_skills_linkedin(linkedin_conection, access_token, habilidadesDB, competenciasDB) empresas, habilidades_dict = __get_empresas(linkedin_conection, access_token, habilidades_dict, habilidadesDB) email = __get_email(linkedin_conection, access_token) idiomas = __get_idiomas(linkedin_conection, access_token) estudios_dict, nivel_titulacion = __get_estudios(linkedin_conection, access_token) # creamos la entidad usuario print "Datos Obtenidos\nGuardando..." db_user = mongodb.get_db(database_ip, database_port, database_usuarios) desplazamiento = raw_input("Cuanto estarias dispuesto a desplazarte(0(localidad)-3(pais)):") usuario_db = db_user.find_one({'email': email}) usuario = None if usuario_db is not None: print "Usuario encontrado\nActualizando..." usuario = Users.Users(nombre, apellidos, email) usuario.id = usuario_db['_id'] usuario.ciudad = usuario_db['ciudad'] usuario.idiomas = usuario_db['idiomas'] usuario.nivel_titulacion = usuario_db['nivel_titulacion'] usuario.competencias = usuario_db['competencias'] usuario.habilidades = usuario_db['habilidades'] usuario.estudios = usuario_db['estudios'] usuario.empresas = usuario_db['empresas'] else: usuario = Users.Users(nombre, apellidos, email) usuario.ciudad = ciudad usuario.email = email usuario.idiomas = idiomas usuario.desplazamiento = int(desplazamiento) usuario.nivel_titulacion = nivel_titulacion if usuario.competencias is None: usuario.competencias = competencias_dict else: usuario.competencias.update(competencias_dict) if usuario.habilidades is None: usuario.habilidades = habilidades_dict else: usuario.habilidades.update(habilidades_dict) if usuario.estudios is None: usuario.estudios = estudios_dict else: for estudio in estudios_dict: if estudio not in usuario.estudios: usuario.estudios.append(estudio) if usuario.empresas is None: usuario.empresas = empresas else: for empresa in empresas: if empresa not in usuario.empresas: usuario.empresas.append(empresa) mongodb.add_update_element(db_user, usuario.toDBCollection()) print "Usuario Guardado: " + nombre + " " + apellidos return
# coding: UTF-8 from lxml import etree import mongodb # no se añaden los datasets al git dado que cada uno de ellos tenía un peso de unos 100MB, resultando una carga excesiva # no obstante, se corresponden a las primeras 375000 empresas listadas en Sabi bajo 'Todas las empresas' cont = 0 col = mongodb.get_db("52.208.8.144", 8080, "ranking") docs = [] print("parseando archivo1") tree1 = etree.parse('Sabi_Export_1.xml') root1 = tree1.getroot() print("codigo listo") for record in root1: for item in record: if item.get("field") == "NAME": docs.append({'_id':cont, 'Nombre': item.text}) cont += 1 for i in range(0, len(docs)/1000): j = i*1000 docs2 = docs[j:j+1000] col.insert(docs2) docs = [] print("parseando archivo2") tree2 = etree.parse('Sabi_Export_2.xml') root2 = tree2.getroot() print("codigo listo") for record in root2: for item in record:
import scrapping_uvigo import infojobs import mongodb print "Prueba.py\n" print "Obtener base de datos" ofertas_db = mongodb.get_db() print "\nObtener ofertas de Uvigo" ofertas_uvigo = scrapping_uvigo.get_uvigo() for oferta_uvigo in ofertas_uvigo: mongodb.add_update_oferta(ofertas_db, oferta_uvigo) print oferta_uvigo print "\nObtener ofertas de Infojobs" ofertas_infojobs = infojobs.get_infojobs() for each_oferta in ofertas_infojobs: mongodb.add_update_oferta(ofertas_db, each_oferta) print each_oferta
def _collection(cls): name = cls._name() db = mongodb.get_db() collection = db[name] return collection