示例#1
0
def carrega_plano():
    URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-plano.php'
    parametros = {'id_operadora':19, 'formatacao_texto':2, 'conv_id':'',
                  'default_label_sessao_outros_planos':'Outros planos', 
                  'default_label_sessao_meus_planos':'Meu plano'}
    tipo = 'html'
    metodo = 'get'
    
    plano = None
    
    
    # Chamada da função para criar um BS a partir de uma url
    while True:
        try:
            erro, msg_erro, bs = busca_pagina(URL, tipo, parametros, metodo)
            break
        except Exception as e:
            print(e)
            print(parametros)
            continue
    
    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return
    
    try:
        planos = bs.find_all('li')
    except Exception as e:
        msg_erro = gera_msg_erro(e, 'Falhou no bs.find_all')
        grava_msg_erro(msg_erro)
        return
    
    
    if not planos:
        msg_erro = gera_msg_erro(None, 'Falhou no bs.find_all')
        grava_msg_erro(msg_erro)
        return


    for plano in planos:
        
        try:
            id_plano = plano.find('div').get('data-id')
            nome = plano.find('div').get('data-nome')
            ans = plano.find('em').text.split('|')[0].strip().split(':')[1].strip()
            tipo = plano.find('em').text.split('|')[1].strip()
            status = plano.find('strong').text.strip()
        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca de atributos')
            grava_msg_erro(msg_erro)
            return
        
        erro, msg_erro = grava_plano(id_plano, nome, ans, tipo, status)
        if erro:
            grava_msg_erro(msg_erro)
            return 
示例#2
0
def carrega_municipio():

    erro, msg_erro, ufs = busca_uf()

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for uf in ufs:
        id_uf = uf[0]
        id_plano = uf[1]
        sg_uf = uf[3]
        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-cidade.php'
        parametros = {
            'id_operadora': 19,
            'id_estado': sg_uf,
            'id_plano': id_plano,
            'formatacao_texto': '1590362791956'
        }
        tipo = 'html'
        metodo = 'get'

        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros,
                                                  metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue

        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        try:
            municipios = bs.find('ul').find_all('a')
            for municipio in municipios:
                cd_municipio = municipio.get('data-id')
                nm_municipio = municipio.text

                erro, msg_erro = grava_municipio(id_uf, cd_municipio,
                                                 nm_municipio)

        except Exception as e:
            msg_erro = gera_msg_erro(
                e, 'Falhou na busca montagem dos municipios')
            grava_msg_erro(msg_erro)
            return

        #erro, msg_erro = grava_plano(nome, ans, tipo, status)
        if erro:
            grava_msg_erro(msg_erro)
            return
示例#3
0
def carrega_uf():
    erro, msg_erro, planos = busca_plano()

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for plano in planos:
        id_plano = plano[0]

        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-estado-unico.php'
        parametros = {
            'true': '',
            'id_operadora': 19,
            'id_plano': id_plano,
            '_': '1590356909735'
        }
        tipo = 'json'
        metodo = 'get'

        # Chamada da função para criar um BS a partir de uma url
        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros,
                                                  metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue

        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        try:
            for uf in bs['estados']:
                cd_uf = uf['id']
                sg = uf['uf']
                nome = uf['nome']
                codigo_IBGE = uf['codigo_IBGE']

                erro, msg_erro = grava_uf(id_plano, cd_uf, sg, nome,
                                          codigo_IBGE)

                if erro:
                    grava_msg_erro(msg_erro)
                    return

        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca de estados')
            grava_msg_erro(msg_erro)
            return
示例#4
0
def carrega_especialidade():
    erro, msg_erro, planos = busca_plano()
    
    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return
    
    for plano in planos:
        id_plano = plano[0]
        
        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-especialidade.php'
        parametros = {'id_operadora':19, 'id_cidade': '',  
                      'id_plano': id_plano, 'id_estado': '', 'bairro': '',
                      'formatacao_texto':'2',
                      'force_especialidade':'S', 'id_tipo_prestador': ''}
        tipo = 'html'
        metodo = 'get'
    
        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros, metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue
    
        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return
    
        try:
            especialidades = bs.find('ul').find_all('a')
            for especialidade in especialidades:
                cd_especialidade = especialidade.get('data-id')
                nm_especialidade = especialidade.text
                
                erro, msg_erro = grava_especialidade(id_plano, cd_especialidade, nm_especialidade)              
                
        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca montagem dos bairros')
            grava_msg_erro(msg_erro)
            return
    
        if erro:
            grava_msg_erro(msg_erro)
            return
def carrega_tipo_prestador():
    erro, msg_erro, planos = busca_plano()

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for plano in planos:
        id_plano = plano[0]

        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-tipo-prestador.php'
        parametros = {
            'id_operadora': 19,
            'id_cidade': '',
            'id_plano': id_plano,
            'id_estado': '',
            'bairro': '',
            'formatacao_texto': '2',
            '_': '1590376516866',
            'force_especialidade': 'S'
        }
        tipo = 'html'
        metodo = 'get'

        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros,
                                                  metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue

        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        try:
            tipos_prestador = bs.find('ul').find_all('a')
            for tp in tipos_prestador:
                cd_tipo_prestador = tp.get('data-id')
                if cd_tipo_prestador:
                    nm_tipo_prestador = tp.text
                else:
                    continue

                erro, msg_erro = grava_tipo_prestador(id_plano,
                                                      cd_tipo_prestador,
                                                      nm_tipo_prestador)

        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca montagem dos bairros')
            grava_msg_erro(msg_erro)
            return

        #erro, msg_erro = grava_plano(nome, ans, tipo, status)
        if erro:
            grava_msg_erro(msg_erro)
            return
def carrega_lista_prestador():
    erro, msg_erro, prestador_bairro_especialidade = busca_tipo_prestador_bairro_especialidade(
    )

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for pbe in prestador_bairro_especialidade:
        id_plano = pbe[0]
        id_uf = pbe[2]
        id_cidade = pbe[3]
        id_bairro = pbe[5]
        bairro = pbe[6]
        id_tipo_prestador = pbe[7]
        cd_tipo_prestador = pbe[8]
        id_especialidade = pbe[10]
        cd_especialidade = pbe[11]

        URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-busca.php'
        parametros = {
            'id_operadora': 19,
            'id_plano': id_plano,
            'id_estado': id_uf,
            'id_cidade': id_cidade,
            'bairro': bairro,
            'id_tipo_prestador': cd_tipo_prestador,
            'id_especialidade': cd_especialidade,
            'regiao_tipo': 'endereco',
            'utiliza_secoes': 'N',
            'agrupa_espec': 'N',
            'formatacao_texto': '2',
            'paged': '0'
        }
        tipo = 'html'
        metodo = 'get'

        while True:
            try:
                erro, msg_erro, bs = busca_pagina(URL, tipo, parametros,
                                                  metodo)
                break
            except Exception as e:
                print(e)
                print(parametros)
                continue
        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        try:
            prestadores = bs.find_all('table', {'class': 'resultados-lista'})
            if prestadores is None:
                prestadores = bs.find_all('table',
                                          {'class': 'resultados-lista '})

            for prestador in prestadores:
                cd_prestador = prestador.get('data-id')

                nome = prestador.find('h5')
                if nome is not None:
                    nm_prestador = nome.text.strip()
                else:
                    nm_prestador = ''

                especialidade = prestador.find("span", {"class": "color-2"})
                if especialidade is not None:
                    nm_especialidade = especialidade.text.strip()
                else:
                    nm_especialidade = ''
                tel_todos = ''
                telefones = prestador.find('div', {
                    'class': 'telefones'
                }).find_all('p')
                if telefones is not None:
                    for telefone in telefones:
                        if tel_todos == '':
                            tel_todos += f'{telefone.span.text}'
                        else:
                            tel_todos += f'|{telefone.span.text}'

                endereco = prestador.find('h6')
                if endereco is not None:
                    nm_logradouro_ampliado = endereco.text.strip()
                else:
                    nm_logradouro_ampliado = ''

                bairro = endereco.next_sibling.next_sibling
                nm_bairro = bairro.span.text

                mun_uf = bairro.next_sibling.next_sibling.span.text
                nm_municipio = mun_uf.split('/')[0]
                sg_uf = mun_uf.split('/')[1]

                # print(cd_prestador)
                # print(nome)
                # print(especialidade)
                # print(f'Nome: {nm_prestador}, especialidade: {nm_especialidade}')
                # print(tel_todos)
                # print(nm_logradouro_ampliado)
                # print(nm_bairro)
                # print(f'{nm_municipio}/{sg_uf}')

                erro, msg_erro = grava_lista_prestador(
                    id_tipo_prestador, id_bairro, id_especialidade,
                    cd_prestador, nm_prestador, nm_especialidade,
                    nm_logradouro_ampliado, nm_bairro, nm_municipio, sg_uf,
                    tel_todos)

        except Exception as e:
            msg_erro = gera_msg_erro(e, 'Falhou na busca montagem dos bairros')
            grava_msg_erro(msg_erro)
            return

        # erro, msg_erro = grava_plano(nome, ans, tipo, status)
        if erro:
            grava_msg_erro(msg_erro)
            return
def carrega_tipo_prestador_bairro_especialidade_temp():

    erro, msg_erro, ufs = busca_uf_temp()

    if erro:
        # Salva log de erro
        grava_msg_erro(msg_erro)
        return

    for uf in ufs:
        id_uf = uf[0]
        id_plano = uf[1]
        sg_uf = uf[3]

        erro, msg_erro, municipios = busca_municipio_temp(id_uf)

        if erro:
            # Salva log de erro
            grava_msg_erro(msg_erro)
            return

        for municipio in municipios:
            id_municipio = municipio[0]
            cd_municipio = municipio[2]

            erro, msg_erro, bairros = busca_bairro_temp(id_municipio)

            if erro:
                # Salva log de erro
                grava_msg_erro(msg_erro)
                return

            for bairro in bairros:
                id_bairro = bairro[0]
                nm_bairro = remover_acentos(bairro[2].strip().upper())

                erro, msg_erro, tipos_prestador_bairros = busca_tipo_prestador_bairro(
                    None, id_bairro)

                if erro:
                    grava_msg_erro(msg_erro)
                    return

                for tipo_prestador_bairro in tipos_prestador_bairros:
                    id_tipo_prestador = tipo_prestador_bairro[0]

                    erro, msg_erro, tipo_prestador = busca_tipo_prestador(
                        id_tipo_prestador, id_plano)

                    if erro:
                        grava_msg_erro(msg_erro)
                        return

                    cd_tipo_prestador = tipo_prestador[0][2]

                    URL = 'https://www.redecredenciada.mobi/mobile-guia/v2/ws-especialidade.php'
                    parametros = {
                        'id_operadora': 19,
                        'id_cidade': cd_municipio,
                        'id_plano': id_plano,
                        'id_estado': sg_uf,
                        'bairro': nm_bairro,
                        'id_tipo_prestador': cd_tipo_prestador,
                        'formatacao_texto': '2',
                        '_': '1590376516866',
                        'force_especialidade': 'S'
                    }
                    tipo = 'html'
                    metodo = 'get'

                    while True:
                        try:
                            erro, msg_erro, bs = busca_pagina(
                                URL, tipo, parametros, metodo)
                            break
                        except Exception as e:
                            print(e)
                            print(parametros)
                            continue

                    if erro:
                        # Salva log de erro
                        grava_msg_erro(msg_erro)
                        return

                    try:
                        especialidades = bs.find('ul').find_all('a')
                        for especialidade in especialidades:
                            cd_especialidade = especialidade.get('data-id')

                            erro, msg_erro, especialidade = busca_especialidade(
                                None, id_plano, cd_especialidade, None)

                            if erro:
                                grava_msg_erro(msg_erro)
                                return

                            id_especialidade = especialidade[0][0]

                            erro, msg_erro = grava_tipo_prestador_bairro_especialidade(
                                id_tipo_prestador, id_bairro, id_especialidade)

                    except Exception as e:
                        msg_erro = gera_msg_erro(
                            e, 'Falhou na busca montagem dos bairros')
                        grava_msg_erro(msg_erro)
                        return

                    if erro:
                        grava_msg_erro(msg_erro)
                        return