Ejemplo n.º 1
0
    :param list: InfoList
    :return: the matching pair from a Peice from InfoList
    """
    pairs = []
    for i in list:
        mid = i.get('movie_id')
        pairs.append(movies.find_one(
            {'_id': int(mid)}
        ))

    return pairs
    #pprint(pairs)


if __name__ == '__main__':
    Data = mong.Data() #Connect
    db = Data.Database #Pull the Database

    # Setup Collections for Join
    movies = db.movies
    ratings = db.ratings

    introLine()
    while True:
        uid = input("UserID ")
        if uid == "":
            break
        else:
            try:
                list = grabUID(uid)
                pairs = find_Pairs(list)
Ejemplo n.º 2
0
 def __init__(self):
     self.__venta = Venta()
     self.__db = Mongo()
Ejemplo n.º 3
0
class Menu():
    def __init__(self):
        self.__venta = Venta()
        self.__db = Mongo()

    def pVenta(self):
        return input('¿Agregar un automóvil? (s/n): ')

    def pEmpleado(self):
        return input('¿Deseas agregar un empleado? (s/n): ')

    def nuevoEmpleado(self):
        nombre = input('Ingresa el nombre del empleado: ')
        self.__venta.nuevoEmpleado(nombre)
        # Insertar Empleado a la base de datos (recive al objeto empleado)
        self.__db.insertarEmpleado(self.__venta.getEmpleado())
        self.nuevoVehiculo()

    def qNuevoEmpleado(self):
        respuesta = self.pEmpleado()
        while not respuesta == 'n':
            self.nuevoEmpleado()
            respuesta = self.pEmpleado()

    def nuevoVehiculo(self):
        respuesta = self.pVenta()
        while not respuesta == 'n':
            marca = input('Ingresa la marca: ')
            modelo = input('Ingresa el modelo: ')
            precio = float(input('Ingresa el precio: '))
            v = Vehiculo(marca, modelo, precio)
            self.__venta.getEmpleado().addVehiculo(v)
            # Insertar Auto a la base de datos (recive al objeto auto , bono del empleado, comisiones empleado)
            self.__db.insertarAuto(v,
                                   self.__venta.getEmpleado().getBono(),
                                   self.__venta.getEmpleado().getComisiones())
            respuesta = self.pVenta()
        self.__venta.guardarEmpleado()
        self.imprimirEmpleado()

    def imprimirVehiculos(self):
        for vehiculo in self.__venta.getEmpleado().getvVendidos():
            print(vehiculo.getModelo())

    def imprimirEmpleado(self):
        print('---------------------')
        print("Nombre: " + self.__venta.getEmpleado().getNombre() +
              " Salario: " + str(self.__venta.getEmpleado().getSalario()) +
              " Comision: " + str(self.__venta.getEmpleado().getComisiones()))
        print('---------------------')

    def imprimirEmpleados(self):
        print('---------------------')
        print('\x1b[6;30;42m' + 'Lista de Empleados' + '\x1b[0m')

        for empleado in self.__venta.getEmpleados():
            print("Nombre: " + empleado.getNombre() + " Salario: " +
                  str(empleado.getSalario()) + " Comisiones: " +
                  str(empleado.getComisiones()))

    def imprimirNomina(self):
        print('---------------------')
        print('Nomina: ${0}'.format(self.__venta.getNomina()))

    def cargarArchivo(self):
        respuesta = input('¿Deseas cargar el archivo? (s/n): ')
        if (respuesta == 's'):
            archivo = Archivo()
            self.__venta.setEmpleados(archivo.cargarLista())

    def guardarArchivo(self, empleados):
        respuesta = input('¿Deseas guardar el archivo? (s/n): ')
        if (respuesta == 's'):
            archivo = Archivo()
            archivo.guardarLista(empleados)
            self.imprimirEmpleados()

    def run(self):
        # self.cargarArchivo()
        self.qNuevoEmpleado()
        self.imprimirEmpleados()
        self.imprimirNomina()
Ejemplo n.º 4
0
class Menu():
    def __init__(self):
        self.__venta = Venta()
        self.__db = Mongo()
    
    def pVenta(self):
        return input('¿Agregar un automóvil? (s/n): ')

    def pEmpleado(self):
        return input('¿Deseas agregar un empleado? (s/n): ')
    
    def nuevoEmpleado(self):
        nombre = input('Ingresa el nombre del empleado: ')
        self.__venta.nuevoEmpleado(nombre)
        # Insertar Empleado a la base de datos (recive al objeto empleado)
        self.__db.insertarEmpleado(self.__venta.getEmpleado())
        self.nuevoVehiculo()

    def qNuevoEmpleado(self):
        respuesta = self.pEmpleado()
        while not respuesta == 'n':
            self.nuevoEmpleado()
            respuesta = self.pEmpleado()

    def nuevoVehiculo(self):
        respuesta = self.pVenta()
        while not respuesta == 'n':
            marca = input('Ingresa la marca: ')
            modelo = input('Ingresa el modelo: ')
            precio = float(input('Ingresa el precio: '))
            v = Vehiculo(marca, modelo, precio)
            self.__venta.getEmpleado().addVehiculo(v)
            # Insertar Auto a la base de datos (recive al objeto auto , bono del empleado, comisiones empleado)
            self.__db.insertarAuto(v , self.__venta.getEmpleado().getBono(), self.__venta.getEmpleado().getComisiones())
            respuesta = self.pVenta()
        self.imprimirEmpleado()

    def agregarVehiculo(self):
        c = int(self.__db.consultarEmpleados())
        op = int(input("Selecciona un empleado: "))

        for i in range(c):
            if op == (i+1):
                self.__db.editar(op)

    def imprimirVehiculos(self):
        for vehiculo in self.__venta.getEmpleado().getvVendidos():
            print(vehiculo.getModelo())

    def imprimirEmpleado(self):
        print('---------------------')
        print("Nombre: " + self.__venta.getEmpleado().getNombre() + " Salario: " + str(self.__venta.getEmpleado().getSalario()) + " Comisiones: " + str(self.__venta.getEmpleado().getComisiones()) + " Bono: " + str(self.__venta.getEmpleado().getBono()))
        print('---------------------')

    def imprimirEmpleados(self):
        print('---------------------')
        print('\x1b[6;30;42m' + 'Lista de Empleados' + '\x1b[0m')

        for empleado in self.__venta.getEmpleados():
            print("Nombre: " + empleado.getNombre() + " Salario: "  + str(empleado.getSalario()) + " Comisiones: " + str(empleado.getComisiones()))
    
    def imprimirNomina(self):
        print('---------------------')
        print('Nomina: ${0}'.format(self.__venta.getNomina()))
        self.__db.cerrarConexion()

    def cargarArchivo(self):
        respuesta = input('¿Deseas cargar el archivo? (s/n): ')
        if(respuesta == 's'):
            archivo = Archivo()
            self.__venta.setEmpleados(archivo.cargarLista())
    
    def guardarArchivo(self, empleados):
        respuesta = input('¿Deseas guardar el archivo? (s/n): ')
        if(respuesta == 's'):
            archivo = Archivo()
            archivo.guardarLista(empleados)
            self.imprimirEmpleados()

    def run(self):
        # self.cargarArchivo()
        self.menu()
        op = input("Desea realizar otre accion(s/n): ")
        while op == "s":
            self.menu()
            op = str(input("Desea realizar otre accion(s/n): "))
            if op == "n":
                break
        # self.guardarArchivo(self.__venta.getEmpleados())

    def menu(self):
        print("1)Agregar empleado")
        print("2)Mostrar empleados")
        print("3)Editar empleados")
        print("4)Imprimir nomina")
        op = int(input("Selecciona una opcion: "))
        if op == 1:
            self.qNuevoEmpleado()
        elif op == 2:
            self.__db.consultarEmpleados()
        elif op == 3:
            self.agregarVehiculo()
        elif op == 4:
            self.imprimirNomina()
Ejemplo n.º 5
0
class Spider():
    base_url = 'http://weixin.sogou.com/weixin'
    key_word = 'RNG'
    headers = {
        'accept':
        '*/*',
        'accept-encoding':
        'gzip, deflate',
        'Accept-Language':
        'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Connection	':
        'keep-alive',
        'Cache-Control':
        'max-age=0',
        'cookies':
        'CXID=0DDCDF3AB524336D02F12EE46CD334E4; SUID=D4C85D7C3965860A5AA39D940000145A; '
        'IPLOC=CN2102; SUV=1531959792494460; '
        'sct=5; SNUID=8E67BCEBD1D5A2CE38998221D186284B; '
        'ld=wyllllllll2bFdo5lllllVH5TZGlllllnLLdflllllwlllll9Zlll5@@@@@@@@@@; '
        'LSTMV=347%2C155; LCLKINT=4472; ABTEST=0|1531961096|v1; weixinIndexVisited=1; '
        'JSESSIONID=aaa4Ta7_4rS8e9Jqz3Hsw; '
        'ppinf=5|1532852075|1534061675|dHJ1c3Q6MToxfGNsaWVudGlkOjQ6MjAxN3x1bmlxbmFtZToxODolRTclOUYlQjMlRTUlQ'
        'TQlQjR8Y3J0OjEwOjE1MzI4NTIwNzV8cmVmbmljazoxODolRTclOUYlQjMlRTUlQTQlQjR8dXNlcmlkOjQ0Om85dDJsdUI5VE8'
        '5TE1CemdVRDd5dC10RjI4MzBAd2VpeGluLnNvaHUuY29tfA; '
        'pprdig=Lk7HiV8rT2LS8uZh0riBcnZ8cokN-aN-Yv5OjbnX3qmZS4SYIg7PnnZqXWsxfPwNF1M-YxeT9PZQxGVw7qc6d15IjwIg'
        '_2E9537JOqzdHQL34_9ntlXJ_gYE7RCQ-Nt_piMGk9cvi5Ll9oRWWsdK2dUqWTbDnESGbkA07hWhO9E; '
        'sgid=06-34211517-AVtdd2sgghdVYlHDIz6Ug1U; ppmdig=153286085500000088c26503f3219f8b3403a4a6915fc676',
        'Host':
        'weixin.sogou.com',
        'user-agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0'
    }
    session = Session()
    queue = RedisQueue()
    mongo = Mongo()

    def get_proxy(self):
        """
        从代理池获取代理
        :return:
        """
        try:
            response = requests.get(PROXY_POOL_URL)
            if response.status_code == 200:
                print('Get Proxy', response.text)
                return response.text
            return None
        except requests.ConnectionError:
            return None

    def start(self):
        """
        初始化工作
        """
        # 全局更新Headers
        self.session.headers.update(self.headers)
        start_url = self.base_url + '?' + urlencode({
            'query': self.key_word,
            'type': 2
        })
        weixin_request = WeixinRequest(url=start_url,
                                       callback=self.parse_index,
                                       need_proxy=True)
        # 调度第一个请求
        print('start:' + str(weixin_request.need_proxy))
        self.queue.add(weixin_request)

    def parse_index(self, response):
        """
        解析索引页
        :param response: 响应
        :return: 新的响应
        """
        doc = pq(response.text)
        items = doc('.news-box .news-list li .txt-box h3 a').items()
        for item in items:
            url = item.attr('href')
            weixin_request = WeixinRequest(url=url, callback=self.parse_detail)
            yield weixin_request
        next = doc('#sogou_next').attr('href')
        if next:
            url = self.base_url + str(next)
            weixin_request = WeixinRequest(url=url,
                                           callback=self.parse_index,
                                           need_proxy=True)
            yield weixin_request

    def parse_detail(self, response):
        """
        解析详情页
        :param response: 响应
        :return: 微信公众号文章
        """
        doc = pq(response.text)
        data = {
            'title':
            doc('.rich_media_title').text(),
            'content':
            doc('.rich_media_content').text(),
            'date':
            doc('#post-date').text(),
            'nickname':
            doc('#js_profile_qrcode > div > strong').text(),
            'wechat':
            doc('#js_profile_qrcode > div > p:nth-child(3) > span').text()
        }
        yield data

    def request(self, weixin_request):
        """
        执行请求
        :param weixin_request: 请求
        :return: 响应
        """
        try:
            print(weixin_request.need_proxy)
            if weixin_request.need_proxy:
                proxy = self.get_proxy()

                print('proxy:' + str(proxy))

                if proxy:
                    proxies = {'http': proxy, 'https': proxy}
                    return requests.get(weixin_request.url, proxies=proxies)
            return self.session.send(weixin_request.prepare(),
                                     timeout=weixin_request.timeout,
                                     allow_redirects=False)
        except (ConnectionError, ReadTimeout) as e:
            print(e.args)
            return False

    def error(self, weixin_request):
        """
        错误处理
        :param weixin_request: 请求
        :return:
        """
        weixin_request.fail_time = weixin_request.fail_time + 1
        print('Request Failed', weixin_request.fail_time, 'Times',
              weixin_request.url)
        if weixin_request.fail_time < MAX_FAILED_TIME:
            self.queue.add(weixin_request)

    def schedule(self):
        """
        调度请求
        :return:
        """
        while not self.queue.empty():
            weixin_request = self.queue.pop()
            # weixin_request.need_proxy = True
            print('schedule:' + str(weixin_request.need_proxy))
            callback = weixin_request.callback
            print('Schedule', weixin_request.url)
            response = self.request(weixin_request)
            print('状态码' + str(response.status_code))
            if response and response.status_code in VALID_STATUSES:
                results = list(callback(response))
                if results:
                    for result in results:
                        print('New Result', type(result))
                        if isinstance(result, WeixinRequest):
                            self.queue.add(result)
                        if isinstance(result, dict):
                            self.mongo.insert(result)
                else:
                    self.error(weixin_request)
            else:
                self.error(weixin_request)

    def run(self):
        """
        入口
        :return:
        """
        self.start()
        self.schedule()