From 667c1272146461007d12ed26eddec2af4a7b3396 Mon Sep 17 00:00:00 2001 From: egutierrez Date: Thu, 19 Dec 2024 23:16:43 +0100 Subject: [PATCH] Add initial database models and .gitignore file --- .gitignore | 2 ++ modelos/crawler_model.py | 44 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 .gitignore create mode 100644 modelos/crawler_model.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2217a41 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +venv diff --git a/modelos/crawler_model.py b/modelos/crawler_model.py new file mode 100644 index 0000000..02054bd --- /dev/null +++ b/modelos/crawler_model.py @@ -0,0 +1,44 @@ +from sqlalchemy import create_engine, Column, Integer, String, Text, DateTime, Boolean +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import sessionmaker +from datetime import datetime + +Base = declarative_base() + +class WebsPorVisitar(Base): + __tablename__ = 'webs_por_visitar' + + id = Column(Integer, primary_key=True, autoincrement=True) + url = Column(String(2048), unique=True, nullable=False) + agregado_en = Column(DateTime, default=datetime.utcnow, nullable=False) + prioridad = Column(Integer, default=1, nullable=False) # Prioridad para rastrear + +class WebsVisitadas(Base): + __tablename__ = 'webs_visitadas' + + id = Column(Integer, primary_key=True, autoincrement=True) + url = Column(String(2048), unique=True, nullable=False) + dominio = Column(String(255), nullable=False) + titulo = Column(String(255), nullable=True) + resumen = Column(Text, nullable=True) + ip = Column(String(45), nullable=True) # IPv4 o IPv6 + fecha_creacion = Column(DateTime, default=datetime.utcnow, nullable=False) + codigo_http = Column(Integer, nullable=True) # Código de respuesta HTTP + contenido_hash = Column(String(64), nullable=True) # Hash del contenido para detectar cambios + es_dinamico = Column(Boolean, default=False) # Si es una página generada dinámicamente + +# Crear el motor de base de datos y las tablas +engine = create_engine('postgresql://usuario:password@localhost:5432/nombre_bd') +Base.metadata.create_all(engine) + +# Crear una sesión +Session = sessionmaker(bind=engine) +session = Session() + +# Ejemplo de cómo agregar una entrada +if __name__ == "__main__": + nueva_web_por_visitar = WebsPorVisitar(url="http://example.com") + session.add(nueva_web_por_visitar) + session.commit() + + print("Nueva URL agregada a 'webs_por_visitar'.")