def analize(self, url): try: print("Dentro de analize") print(url) html = urlopen(url) except HTTPError as e: print(e) except URLError as u: print("Servidor depo no encontrado " + url) print(u) else: content = html.read().decode('utf-8', 'ignore') res = BeautifulSoup(content, "html.parser") strnumero = res.find("h2", {"class": "numero"}) if (strnumero is None): print("No existe boletín para este día") return False numero = int(strnumero.getText().split()[2]) info = res.find("span", {"class": "fecha"}).getText().split() year = int(info[len(info) - 4]) mes = self.meses.index( info[len(info) - 6]) + 1 # El array comienza en 0 dia = int(info[len(info) - 8]) fecha = date(year, mes, dia) if (self.checkNumber(year, numero, "BOPPO")): return True self.beginAnalysis(fecha) self.setAnalysisState("BOPPO", fecha, "INICIADO") grupo = res.findAll("ul", {"class": "listadoSumario"}) for tag in grupo: organismo = tag.findPrevious('p', {"class": "Org"}).getText() seccion = tag.findPrevious('h4', {"class": "tit"}).getText() tmp = tag.fetchPreviousSiblings()[0] # Busco los elementos anteriores lis = tag.findAll("li") for li in lis: noticia = Noticia() noticia.bulletin = "BOPPO" noticia.bulletin_year = year noticia.bulletin_no = numero noticia.bulletin_date = fecha noticia.created_at = datetime.now() noticia.updated_at = datetime.now() noticia.seccion = seccion noticia.organismo = organismo noticia.organo = li.span.getText() noticia.servicio = "" noticia.organization = li.span.getText() noticia.newname = li.p.getText() if (tmp.get("class")[0] == "inst"): noticia.organo = tmp.getText() if (self.isNotificable(noticia.newname)): noticia.notify = 1 noticia.url = "https://boppo.depo.gal" + li.a['href'] self.normalizar(noticia) noticia.imprimir() noticia.save() # LLegados aquí, ha finalizado el análisis self.setAnalysisState("BOPPO", fecha, "FINALIZADO")
def analize(self, url): try: html = urlopen(url) except HTTPError as e: print(e) except URLError as u: print("Servidor depo no encontrado " + url) print(u) else: content = html.read().decode('utf-8', 'ignore') res = BeautifulSoup(content, "html.parser") # Vamos a por el número: grupo_codigo = res.find('div', {"class": "field--name-field-ail-codigo"}) numero = int( grupo_codigo.find('div', {'class', 'field__item'}).getText()) grupo_codigo = res.find( 'div', {'class', 'field--name-field-ail-bop-fecha-publicacion'}) sfecha = grupo_codigo.find('div', { 'class': 'field__item' }).getText().split() dia = int(sfecha[1]) mes = self.meses.index(sfecha[3].lower()) + 1 anio = int(sfecha[5]) fecha = date(anio, mes, dia) if (self.checkNumber(anio, numero, "BOPLU")): return True self.beginAnalysis(fecha) self.setAnalysisState("BOPLU", fecha, "INICIADO") div = res.find("div", {"class": "field--name-field-ail-bop-contenido"}) lista = div.find("ul") secciones = lista.children for seccion in secciones: if hasattr(seccion, 'strong'): seccion_nombre = seccion.strong.getText() if (not hasattr(seccion, 'children')): continue lista = seccion.find("ul") if (lista is not None): organismos = lista.findChildren("li", recursive=False) for organismo in organismos: noticias = organismo.find("ul") if ((organismo.strong is None) or (noticias is None)): noticia = Noticia() noticia.bulletin = "BOPLU" noticia.bulletin_year = anio noticia.bulletin_no = numero noticia.bulletin_date = fecha noticia.created_at = datetime.now() noticia.updated_at = datetime.now() noticia.seccion = "OTROS" noticia.organismo = seccion_nombre noticia.organo = "" noticia.servicio = "" noticia.organization = "" if (organismo.a is not None): noticia.newname = organismo.a.getText() noticia.url = "http://deputacionlugo.gal" + organismo.a[ 'href'] else: print("Ha habido una incidencia") noticia.newname = "INCIDENCIA: " if (self.isNotificable(noticia.newname)): noticia.notify = 1 self.normalizar(noticia) noticia.imprimir() noticia.save() else: noticias = organismo.ul.findChildren("li") for n in noticias: noticia = Noticia() noticia.bulletin = "BOPLU" noticia.bulletin_year = anio noticia.bulletin_no = numero noticia.bulletin_date = fecha noticia.created_at = datetime.now() noticia.updated_at = datetime.now() noticia.seccion = seccion_nombre noticia.organismo = organismo.strong.getText() noticia.organo = "" noticia.servicio = "" noticia.organization = "" noticia.newname = n.a.getText() if (self.isNotificable(noticia.newname)): noticia.notify = 1 noticia.url = "http://deputacionlugo.gal" + n.a[ 'href'] self.normalizar(noticia) noticia.imprimir() noticia.save() else: print("Lista vacía") self.setAnalysisState("BOPLU", fecha, "FINALIZADO")