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)))
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)))
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))
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)))
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)))
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)))
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)))
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)))
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)))
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)
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 ]
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))
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)))
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)
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)
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)))
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))
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)))
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)))