示例#1
0
def crawlerFamosoRelacionados(i):
        famoso = {'id': i[0], 'nome': i[1].strip(), 'link': i[2], 'nascimento': i[3], 'idade': i[4], 'signo': i[5], 'relacionamento': i[6], 'conjuge': i[7]}
        try:
            html = urllib.request.urlopen("http://ego.globo.com" + famoso['link'])
            soup = bs(html, "html.parser")
            listaRelacionados = soup.find("ul", class_ = "famosos-relacionados")

            print(str(famoso['nome']))
            if listaRelacionados != None:
                listaRelacionados = listaRelacionados.find_all("a")

                for j in listaRelacionados:
                    linkRelacionado = j.attrs['href']
                    nomeRelacionado = j.find("img").attrs['alt']
                    '''nomeRelacionado = limpezaNome(nomeRelacionado)'''
                    famosoRelacionado = {"idFamoso1": famoso['id'], "nome": nomeRelacionado, "link": linkRelacionado }

                    if model.verificarFamosoRelacionadoJaInserido(famosoRelacionado['idFamoso1'],famosoRelacionado['nome']) == False:
                        if model.inserirFamosoRelacionado(famosoRelacionado) == True:
                            print("  - Famoso: " + str(famosoRelacionado['nome']) + " inserido com sucesso.")
                    else:
                        print("  - Famoso: " + str(famosoRelacionado['nome']) + " já inserido.")

            return True
        except urllib.error.HTTPError as e:
            if e.code == 404:
                print("Pagina do famoso nao encontrada")
                model.gravarLog(idMensagens = 11, idFamoso = famoso['id'])
                return False
            else:
                print(str(e) + " Famoso: " + str(famoso['nome']))
                return False
        except Exception as e:
            print(str(e))
            return False
示例#2
0
def processarNoticias(noticias):
    for i in noticias:
        try:
            html = urllib.request.urlopen(i['permalink'])
            soup = bs(html, "html.parser")
        except urllib.error.HTTPError as e:
            if e.code == 404:
                print("Noticia não encontrada. (Erro 404) - Proxima noticia... ")
                model.gravarLog(idMensagens=11, link=i['permalink'])
                continue
        i['titulo'] = i['titulo'].replace("\n","")
        i['titulo'] = i['titulo'].replace("\t","")
        i['titulo'] = i['titulo'].replace("\r","")
        i['titulo'] = i['titulo'].replace('"', "'")
        i['titulo'] = i['titulo'].replace("\u266a","")
        i['titulo'] = i['titulo'].replace("\u200f","")
        i['titulo'] = i['titulo'].strip()

        if model.verificarNoticiaInserida(i['titulo'], i['permalink']) == False:
            if i['tipo'] == "materia":
                try:
                    paragrafos = soup.find('div', class_ = "materia-conteudo").find_all('p')
                except:
                    print("Noticia sem paragrafos. **********************************")
                    model.gravarLog(idMensagens=27,tituloNoticia=i['titulo'], link= i['permalink'])
                    continue
                texto = ""
                for j in paragrafos:
                    temp = j.get_text()
                    temp = temp.replace("\n","")
                    temp = temp.replace("\t","")
                    temp = temp.replace("\r","")
                    temp = temp.replace("\u266a","")
                    if len(temp) > 3:
                        texto += temp

                texto = texto.replace('"',"'")
                i['subtitulo'] = i['subtitulo'].replace('"', "'")
            else:
                '''Noticia do tipo Galeria que não possui texto'''
                print("************ Noticia tipo GALERIA: " + i['permalink'] + " TIPO: " + str(i['tipo']))
                texto = None
                i['subtitulo'] = i['subtitulo'].replace('"',"'")
            noticia = { 'titulo': i['titulo'], 'tipo': i['tipo'], 'subtitulo': i['subtitulo'], 'link': i['permalink'], 'texto': texto, 'data': i['primeira_publicacao']}
            model.cadastrarNoticia(noticia)
示例#3
0
def crawlerListaFamosos():
    html = urllib.request.urlopen("http://ego.globo.com/famosos/")
    soup = bs(html, "html.parser")
    listahtmlfamosos = soup.find(id = 'main').find_all("a")
    qtdAtualFamosos = 0
    qtdTotalFamosos = len(listahtmlfamosos)
    for i in listahtmlfamosos:
        qtdAtualFamosos += 1
        famoso = { 'link': i.get('href'), 'nome': i.get_text() }

        try:
            htmldetalhes = urllib.request.urlopen("http://ego.globo.com" + famoso['link'])

            soupdetalhes = bs(htmldetalhes, "html.parser")

            detalheshtml = soupdetalhes.find("ul", class_ = "detalhes")

            if detalheshtml != None:
                relacionamento = detalheshtml.find("li", class_="relacionamento")
                if relacionamento != None:
                    relacionamento = relacionamento.get_text()
                    relacionamento = relacionamento.split(" ")
                    relacionamento = relacionamento[0]
                    relacionamento = relacionamento.replace("\n", "")

                    if relacionamento == "casada": relacionamento = "casado"
                    if relacionamento == "solteira": relacionamento = "solteiro"
                    if relacionamento == "divorciada": relacionamento = "divorciado"

                    relacionamento = model.buscarTipoRelacionamento(relacionamento, famoso['nome'])
                else:
                    relacionamento = 0

                conjuge = detalheshtml.find("li", class_="relacionamento")
                if conjuge != None:
                    conjuge = conjuge.find("a")
                    if conjuge != None:
                        conjugeNome = conjuge.get_text()
                        '''conjugeNome = limpezaNome(conjugeNome)'''

                        conjuge = model.inserirConjuge(conjugeNome, famoso['nome'])
                    else:
                        conjuge = 0
                else:
                    conjuge = 0

                idade = detalheshtml.find("li", class_ = "aniversario")
                if idade != None:
                    idade = idade.get_text()
                    idade = idade.split("(")
                    idade = idade[len(idade) - 1]
                    idade = int(idade[:2])

                datanascimento = detalheshtml.find("time")
                if datanascimento != None:
                    datanascimento = datanascimento['datetime']

                signo = detalheshtml.find("li", class_ = "signo")
                if signo != None:
                    signo = signo.find("a").get_text()
                    signo = model.buscarSigno(signo, famoso['nome'])

            '''famoso['nome'] = limpezaNome(famoso['nome'])'''
            famoso.update({'nome': famoso['nome'].strip(), 'idade': idade, 'datanascimento': datanascimento, 'signo': signo, 'relacionamento': relacionamento, 'conjuge': conjuge })

            model.inserirfamososdb(famoso,qtdAtualFamosos, qtdTotalFamosos)
        except urllib.error.HTTPError as err:
            if err.code == 404:
                model.gravarLog(idMensagens = 11, nomeFamoso = famoso['nome'])
                print("Página não encontrada. Gravado no log com sucesso! Famoso: " + famoso['nome'])

                relacionamento = conjuge = idade = datanascimento = signo = ''

                '''famoso['nome'] = limpezaNome(famoso['nome'])'''
                famoso.update({'nome': famoso['nome'], 'idade': idade, 'datanascimento': datanascimento, 'signo': signo, 'relacionamento': relacionamento, 'conjuge': conjuge })
                model.inserirfamososdb(famoso)

            else:
                model.gravarLog(idMensagens = 12, nomeFamoso = famoso['nome'])
                print("Erro inesperado ao obter detalhes do famoso. Gravado no log com sucesso! Famoso: " + famoso['nome'])