Add database migration scripts and update models for JSON support

This commit is contained in:
2024-12-19 23:55:37 +01:00
parent abbc23ae46
commit ed7eb57f6c
11 changed files with 299 additions and 11 deletions
+10 -6
View File
@@ -62,14 +62,18 @@ def generate_summary(soup):
# Extraer texto de párrafos principales
paragraphs = [p.get_text(strip=True) for p in soup.find_all('p')][:5]
# Generar un resumen en texto plano
resumen_texto = f"Título: {titulo}. Descripción: {descripcion}. Encabezados: {', '.join(headers['h1'][:3])}."
# Resumen estructurado
summary = {
summary_json = {
"titulo": titulo,
"descripcion": descripcion,
"encabezados": headers,
"parrafos": paragraphs
}
return summary
return resumen_texto, summary_json
def process_url(url):
"""Procesa una URL: extrae datos y las inserta en las tablas correspondientes."""
@@ -86,7 +90,7 @@ def process_url(url):
soup = BeautifulSoup(response.text, 'html.parser')
dominio = urlparse(url).netloc
summary = generate_summary(soup)
resumen_texto, resumen_json = generate_summary(soup)
ip = requests.get(f"https://api.ipify.org?domain={dominio}&format=json").json().get('ip', "")
contenido_hash = hash_content(response.text)
@@ -94,8 +98,8 @@ def process_url(url):
visitada = WebsVisitadas(
url=url,
dominio=dominio,
titulo=summary['titulo'],
resumen=f"Descripción: {summary['descripcion']}, Encabezados: {summary['encabezados']}, Párrafos: {summary['parrafos']}",
titulo=resumen_json['titulo'],
resumen=resumen_texto, # Resumen en texto plano
ip=ip,
codigo_http=status_code,
contenido_hash=contenido_hash
@@ -133,7 +137,7 @@ def crawl():
if __name__ == "__main__":
# URL inicial
url_inicial = "http://example.com"
url_inicial = "https://datos.bancomundial.org/"
# Insertar URL inicial si no existe
if not session.query(WebsPorVisitar).filter_by(url=url_inicial).first():