Ejemplo n.º 1
0
    def leer_historico(self):
        entradas = self.parsear_entradas()
        urls_discursos = self.parsear_urls_discursos(entradas)
        discursos = self.parsear_discursos(urls_discursos)

        for titulo, fecha, texto, url in discursos:
            self.noticias.append(Noticia(fecha=fecha, url=url, diario=self.etiqueta, seccion='todo', titulo=titulo, texto=self.limpiar_texto(texto)))
Ejemplo n.º 2
0
    def leer(self):
        kiosco = Kiosco()

        entradas = self.getTuplas()[0:70]

        print("leyendo " + str(len(entradas)) + " noticias de '" + self.etiqueta + "'...")

        i = 0
        for url, fecha, seccion in entradas:
            i += 1

            # if url in urls_existentes:
            if kiosco.contar_noticias(diario=self.etiqueta, url=url):
                print("noticia " + str(i) + "/" + str(len(entradas)) +" ya descargada")
                continue

            print("descargando noticia " + str(i) + "/" + str(len(entradas)))
            titulo, texto = self.parsearNoticia(url)

            if seccion == "futbol":
                seccion = "deportes"
            
            if seccion not in self.secciones:
                seccion = "varios"

            self.noticias.append(Noticia(fecha=fecha, url=url, diario=self.etiqueta, seccion=seccion, titulo=titulo, texto=self.limpiar_texto(texto)))
Ejemplo n.º 3
0
    def leer(self):
        kiosco = Kiosco()

        print("leyendo noticias de '" + self.etiqueta + "'...")

        for seccion, url_feed in self.feeds.items():

            i = 0

            entradas = self.entradas_feed(url_feed=url_feed)[0:5]

            print("     " + str(len(entradas)) + " noticias de '" +
                  self.etiqueta + "/" + seccion + "'...")
            for url, fecha, titulo in entradas:

                i += 1

                # if url in urls_existentes:
                if kiosco.contar_noticias(diario=self.etiqueta, url=url):
                    print("     noticia " + str(i) + "/" + str(len(entradas)) +
                          " ya descargada")
                    continue

                print("     descargando noticia " + str(i) + "/" +
                      str(len(entradas)))
                texto = self.parsear_noticia(url=url)
                if texto == None:
                    continue
                self.noticias.append(
                    Noticia(fecha=fecha,
                            url=url,
                            diario=self.etiqueta,
                            seccion=seccion,
                            titulo=titulo,
                            texto=texto))
Ejemplo n.º 4
0
    def leer_todo(self):
        kiosco = Kiosco()

        print("leyendo '" + self.etiqueta + "'...")

        tag_regexp = re.compile(r'<[^>]+>')

        entradas = []
        url_feed_template = self.feeds['todo'] + "&start="
        index = 0
        feed = fp.parse(url_feed_template + str(index))
        while len(feed.entries) > 0:
            entradas.extend(feed.entries)
            index += 40
            feed = fp.parse(url_feed_template + str(index))

        for entrada in entradas:
            titulo = entrada.title
            texto = bs(re.sub(tag_regexp, ' ', entrada.summary),
                       features="lxml").text

            fecha = dateutil.parser.parse(entrada.published)
            url = entrada.link
            if kiosco.bd.noticias.find(filter={
                    'diario': self.etiqueta,
                    'url': url
            }).count() > 0:  # si existe ya la noticia (url), no la decargo
                continue
            self.noticias.append(
                Noticia(fecha=fecha,
                        url=url,
                        diario=self.etiqueta,
                        categoria='todo',
                        titulo=titulo,
                        texto=self.limpiar_texto(texto)))
Ejemplo n.º 5
0
    def leer(self):
        kiosco = Kiosco()

        print("leyendo '" + self.etiqueta + "'...")

        tag_regexp = re.compile(r'<[^>]+>')
        for tag, url_feed in self.feeds.items():
            for entrada in fp.parse(url_feed).entries:
                titulo = entrada.title
                texto = re.sub(tag_regexp, ' ', entrada.content[0].value)
                fecha = dateutil.parser.parse(
                    entrada.published) - datetime.timedelta(hours=3)
                url = entrada.link
                if kiosco.bd.noticias.find(filter={
                        'diario': self.etiqueta,
                        'url': url
                }).count() > 0:  # si existe ya la noticia (url), no la decargo
                    continue
                self.noticias.append(
                    Noticia(fecha=fecha,
                            url=url,
                            diario=self.etiqueta,
                            categoria=tag,
                            titulo=titulo,
                            texto=self.limpiar_texto(texto)))
Ejemplo n.º 6
0
    def leer(self):
        kiosco = Kiosco()

        entradas = self.entradas_feed()[0:40]

        print("leyendo " + str(len(entradas)) + " noticias de '" +
              self.etiqueta + "'...")

        i = 0
        for url, fecha in entradas:

            i += 1

            # if url in urls_existentes:
            if kiosco.contar_noticias(diario=self.etiqueta, url=url):
                print("noticia " + str(i) + "/" + str(len(entradas)) +
                      " ya descargada")
                continue

            print("descargando noticia " + str(i) + "/" + str(len(entradas)))
            seccion, titulo, texto = self.parsear_noticia(url=url)
            if texto == None:
                continue

            if seccion not in self.secciones:
                continue

            self.noticias.append(
                Noticia(fecha=fecha,
                        url=url,
                        diario=self.etiqueta,
                        seccion=seccion,
                        titulo=titulo,
                        texto=self.limpiar_texto(texto)))
Ejemplo n.º 7
0
    def leer(self):
        kiosco = Kiosco()

        print("leyendo noticias de '" + self.etiqueta + "'...")

        tag_regexp = re.compile(r'<[^>]+>')

        for tag, url_feed in self.feeds.items():

            i = 0

            feed = fp.parse(url_feed)
            entradas = feed.entries[0:5]

            print("     " + str(len(entradas)) + " noticias de '" + self.etiqueta + "/" + tag + "'...")
            for entrada in entradas:
                i += 1

                titulo = str(entrada.title)
                texto = str(bs(re.sub(tag_regexp,' ',entrada.summary), features="lxml").text)

                fecha = dateutil.parser.parse(entrada.published)
                # seccion = fecha.strftime('%H%M%S')
                seccion = 'alberto'
                url = str(entrada.link)

                # si ya se existe la noticia, no la descargo
                if kiosco.contar_noticias(diario=self.etiqueta, url=url):
                    print("     noticia " + str(i) + "/" + str(len(entradas)) +" ya parseada")
                    continue
                
                print("     parseando noticia " + str(i) + "/" + str(len(entradas)))
                self.noticias.append(Noticia(fecha=fecha, url=url, diario=self.etiqueta, seccion=seccion, titulo=titulo, texto=self.limpiar_texto(texto)))
Ejemplo n.º 8
0
    def leer_todo(self):
        kiosco = Kiosco()

        print("leyendo '" + self.etiqueta + "'...")

        tag_regexp = re.compile(r'<[^>]+>')

        entradas = []
        url_feed_template = self.feeds['todo'] + "&start="
        index = 0
        feed = fp.parse(url_feed_template + str(index))
        while len(feed.entries) > 0:
            entradas.extend(feed.entries)
            index += 40
            feed = fp.parse(url_feed_template + str(index))

        urls_existentes = kiosco.urls(diario = self.etiqueta)
        for entrada in entradas:
            titulo = entrada.title
            texto = bs(re.sub(tag_regexp,' ',entrada.summary), features="lxml").text
                
            fecha = dateutil.parser.parse(entrada.published)
            url = entrada.link
            if url in urls_existentes:
                continue

            self.noticias.append(Noticia(fecha=fecha, url=url, diario=self.etiqueta, seccion='todo', titulo=titulo, texto=self.limpiar_texto(texto)))
Ejemplo n.º 9
0
    def leer(self):
        kiosco = Kiosco()

        tag_regexp = re.compile(r'<[^>]+>')

        # recupero las urls del dia de hoy, con la diferencia horario del servidor.
        # si no hay de hoy, me trae de ayer.
        entradas = fp.parse(self.feed_noticias).entries[0:70]

        print("leyendo " + str(len(entradas)) + " noticias de '" +
              self.etiqueta + "'...")

        i = 0
        for entrada in entradas:
            i += 1

            url = str(entrada.link)

            seccion = ''
            try:
                seccion = str(url.split('/')[3])
            except:
                continue

            if seccion == "america":
                seccion = "internacional"

            if seccion == "teleshow":
                seccion = "espectaculos"

            if seccion == "deportes-2":
                seccion = "deportes"

            #if url in urls_existentes:
            if kiosco.contar_noticias(diario=self.etiqueta,
                                      secciones=seccion,
                                      url=url):
                print("noticia " + str(i) + "/" + str(len(entradas)) +
                      " ya descargada")
                continue

            print("parseando noticia " + str(i) + "/" + str(len(entradas)))
            titulo = str(entrada.title)
            texto = str(re.sub(tag_regexp, ' ', entrada.content[0].value))
            fecha = dateutil.parser.parse(
                entrada.published, ignoretz=True) - datetime.timedelta(hours=3)

            if seccion not in self.secciones:
                continue

            self.noticias.append(
                Noticia(fecha=fecha,
                        url=url,
                        diario=self.etiqueta,
                        seccion=seccion,
                        titulo=titulo,
                        texto=self.limpiar_texto(texto)))

        print(self.etiqueta + " leyo " + str(len(self.noticias)))
Ejemplo n.º 10
0
    def test_noticias2freqs(self):
        p = Procesador()

        with open('noticias.json') as j:
            noticias = json.load(j)

        notis = [Noticia(texto = n['texto'], fecha='', url='', diario='', seccion='', titulo=n['titulo']) for n in noticias['noticias']]
        
        fq = p.__noticias2freqs__(notis)
Ejemplo n.º 11
0
    def noticias(self,
                 fecha=None,
                 diario=None,
                 secciones=None,
                 fecha_in=True,
                 url_in=True,
                 diario_in=True,
                 seccion_in=True,
                 tit_in=True,
                 text_in=True):
        query = {}

        if fecha:
            if type(fecha) is dict:
                desde = datetime.datetime(fecha['desde'].year,
                                          fecha['desde'].month,
                                          fecha['desde'].day, 0, 0, 0)
                hasta = datetime.datetime(fecha['hasta'].year,
                                          fecha['hasta'].month,
                                          fecha['hasta'].day, 23, 59, 59)
            else:
                desde = datetime.datetime(fecha.year, fecha.month, fecha.day,
                                          0, 0, 0)
                hasta = datetime.datetime(fecha.year, fecha.month, fecha.day,
                                          23, 59, 59)
            query['fecha'] = {"$gte": desde, "$lte": hasta}

        if diario:
            query['diario'] = diario

        if secciones:
            if type(secciones) is list:
                query['seccion'] = {"$in": secciones}
            else:
                query['seccion'] = {"$in": [secciones]}

        projection = {
            'fecha': fecha_in,
            'url': url_in,
            'diario': diario_in,
            'seccion': seccion_in,
            'titulo': tit_in,
            'texto': text_in
        }

        cursor = self.bd.noticias.find(query, projection)

        return [
            Noticia(fecha=n['fecha'],
                    url=n['url'],
                    diario=n['diario'],
                    seccion=n['seccion'],
                    titulo=n['titulo'],
                    texto=n['texto']) for n in cursor
        ]
Ejemplo n.º 12
0
    def nueva_noticia(self, url, categoria, diario):
        articulo = np.Article(url=url, language='es')
        try:
            articulo.download()
            articulo.parse()
        except:
            return None

        return Noticia(fecha=articulo.publish_date,
                       url=url,
                       diario=diario,
                       categoria=categoria,
                       titulo=articulo.title,
                       texto=self.limpiar_texto(articulo.text))
Ejemplo n.º 13
0
    def leer(self):
        kiosco = Kiosco()

        print("leyendo '" + self.etiqueta + "'...")

        for url, fecha, categoria in self.getTuplas():

            self.noticias.append(
                Noticia(fecha=fecha,
                        url=url,
                        diario=self.etiqueta,
                        categoria=categoria,
                        titulo=titulo,
                        texto=self.limpiar_texto(texto)))
Ejemplo n.º 14
0
    def leer_editoriales(self):
        kiosco = Kiosco()

        tag_regexp = re.compile(r'<[^>]+>')

        i = 0
        for pagina in range(1, 17):
            entradas = fp.parse(
                'https://ledoymipalabra.com/category/editoriales/feed?paged=' +
                str(pagina)).entries

            print("leyendo " + str(len(entradas)) +
                  " noticias de la pagina numero " + str(pagina) +
                  " de las editoriales de '" + self.etiqueta + "'...")

            for entrada in entradas:
                i += 1

                url = str(entrada.id)

                seccion = 'editorial'

                #if url in urls_existentes:
                if kiosco.contar_noticias(diario=self.etiqueta,
                                          secciones=seccion,
                                          url=url):
                    print("noticia " + str(i) + "/" + str(len(entradas)) +
                          " ya descargada")
                    continue

                print("parseando noticia " + str(i) + "/" + str(len(entradas)))
                titulo = str(entrada.title)
                texto = str(
                    re.sub(tag_regexp, ' ', str(entrada.content[0].value)))
                fecha = dateutil.parser.parse(
                    entrada.published,
                    ignoretz=True) - datetime.timedelta(hours=3)

                self.noticias.append(
                    Noticia(fecha=fecha,
                            url=url,
                            diario=self.etiqueta,
                            seccion=seccion,
                            titulo=titulo,
                            texto=self.limpiar_texto(texto)))

        print(self.etiqueta + " leyo " + str(len(self.noticias)))
    def test_calcular(self):

        with open('noticias.json') as j:
            noticias = json.load(j)

        notis = [
            Noticia(texto=n['texto'],
                    fecha=datetime.datetime.now(),
                    url='',
                    diario='',
                    seccion='',
                    titulo=n['titulo']) for n in noticias['noticias']
        ][:5]

        f = Frecuencias(notis)
        f.calcular()
        print(f.resultados)
Ejemplo n.º 16
0
    def nueva_noticia(self, url, categoria, diario):
        articulo = np.Article(url=url, language='es')
        try:
            articulo.download()
            articulo.parse()
        except:
            return None

        categoria_parseada = self.reconocer_categoria(articulo.html)
        if len(categoria_parseada) != 0:
            categoria = categoria_parseada

        return Noticia(fecha=articulo.publish_date,
                       url=url,
                       diario=diario,
                       categoria=categoria,
                       titulo=articulo.title,
                       texto=self.limpiar_texto(articulo.text))
    def test_calcular_solo_sustantivos_sin_lemma(self):

        with open('noticias.json') as j:
            noticias = json.load(j)

        notis = [
            Noticia(texto=n['texto'],
                    fecha=datetime.datetime.now(),
                    url='',
                    diario='',
                    seccion='',
                    titulo=n['titulo']) for n in noticias['noticias']
        ][:5]

        # f = Frecuencias(notis, config = {'leer':['sustantivos'], 'lemma':['']})
        f = Frecuencias(notis)
        f.calcular()
        print(f.resultados)
Ejemplo n.º 18
0
    def leer(self):
        kiosco = Kiosco()

        tag_regexp = re.compile(r'<[^>]+>')

        # recupero las urls del dia de hoy, con la diferencia horario del servidor.
        # si no hay de hoy, me trae de ayer.
        entradas = fp.parse(self.feed_noticias).entries[0:70]

        print("leyendo " + str(len(entradas)) + " noticias de '" +
              self.etiqueta + "'...")

        i = 0
        for entrada in entradas:
            i += 1

            url = str(entrada.id)

            seccion = 'todo'
            for tag in entrada.tags:
                if tag['term'] == 'Le doy Mi Palabra':
                    seccion = 'editorial'

            #if url in urls_existentes:
            if kiosco.contar_noticias(diario=self.etiqueta, url=url):
                print("noticia " + str(i) + "/" + str(len(entradas)) +
                      " ya descargada")
                continue

            print("parseando noticia " + str(i) + "/" + str(len(entradas)))
            titulo = str(entrada.title)
            texto = str(re.sub(tag_regexp, ' ', str(entrada.content[0].value)))
            fecha = dateutil.parser.parse(
                entrada.published, ignoretz=True) - datetime.timedelta(hours=3)

            self.noticias.append(
                Noticia(fecha=fecha,
                        url=url,
                        diario=self.etiqueta,
                        seccion=seccion,
                        titulo=titulo,
                        texto=self.limpiar_texto(texto)))

        print(self.etiqueta + " leyo " + str(len(self.noticias)))
Ejemplo n.º 19
0
    def leer(self):
        kiosco = Kiosco()

        print("leyendo '" + self.etiqueta + "'...")

        for url, fecha, titulo, categoria in self.entradas_feed():
            if kiosco.contar_noticias(
                    diario=self.etiqueta,
                    url=url):  # si existe ya la noticia (url), no la decargo
                continue
            texto = self.parsear_noticia(url=url)
            if texto == None:
                continue
            self.noticias.append(
                Noticia(fecha=fecha,
                        url=url,
                        diario=self.etiqueta,
                        categoria=categoria,
                        titulo=titulo,
                        texto=texto))
Ejemplo n.º 20
0
    def leer(self):
        kiosco = Kiosco()

        print("leyendo '" + self.etiqueta + "'...")

        tag_regexp = re.compile(r'<[^>]+>')
        for entrada in fp.parse(self.feed_noticias).entries:
            url = entrada.link
            if kiosco.contar_noticias(
                    diario=self.etiqueta,
                    url=url):  # si existe ya la noticia (url), no la decargo
                continue
            titulo = entrada.title
            texto = re.sub(tag_regexp, ' ', entrada.content[0].value)
            fecha = dateutil.parser.parse(
                entrada.published) - datetime.timedelta(hours=3)

            categoria = url.split('/')[3]

            if categoria == "america":
                categoria = "internacional"

            if categoria == "teleshow":
                categoria = "espectaculos"

            if categoria == "deportes-2":
                categoria = "deportes"

            if categoria not in self.categorias:
                continue

            self.noticias.append(
                Noticia(fecha=fecha,
                        url=url,
                        diario=self.etiqueta,
                        categoria=categoria,
                        titulo=titulo,
                        texto=self.limpiar_texto(texto)))
Ejemplo n.º 21
0
    def leer(self):
        kiosco = Kiosco()

        tag_regexp = re.compile(r'<[^>]+>')
        
        entradas = fp.parse(self.feed_noticias).entries[0:70]

        print("leyendo " + str(len(entradas)) + " noticias de '" + self.etiqueta + "'...")

        i = 0
        for entrada in entradas:
            i += 1

            url = str(entrada.link)
            
            seccion = str(url.split('/')[3])

            if seccion == "show":
                seccion = "espectaculos"

            if seccion not in self.secciones:
                continue

            # if url in urls_existentes:
            if kiosco.contar_noticias(diario=self.etiqueta, url=url):
                print("noticia " + str(i) + "/" + str(len(entradas)) +" ya descargada")
                continue

            print("parseando noticia " + str(i) + "/" + str(len(entradas)))
            titulo = str(entrada.title)
            texto = str(re.sub(tag_regexp,' ',entrada.content[0].value))
            fecha = dateutil.parser.parse(entrada.published, ignoretz=True)  - datetime.timedelta(hours=3)

            self.noticias.append(Noticia(fecha=fecha, url=url, diario=self.etiqueta, seccion=seccion, titulo=titulo, texto=self.limpiar_texto(texto)))

        print(self.etiqueta + " leyo " + str(len(self.noticias)))