{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "04e9c202-63a6-488c-9711-ebaa3f2cc36a",
   "metadata": {},
   "source": [
    "<figure>\n",
    "<img src=\"../Imagenes/logo-final-ap.png\"  width=\"80\" height=\"80\" align=\"left\"/> \n",
    "</figure>\n",
    "\n",
    "# <span style=\"color:blue\"><left>Aprendizaje Profundo</left></span>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb111889-4bf0-4466-a1e6-d4d9bc1748f2",
   "metadata": {
    "tags": []
   },
   "source": [
    "# <span style=\"color:red\"><center>Proyecto Web</center></span>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "62e9efd8-452b-4f3d-a13b-6b0295667ee2",
   "metadata": {},
   "source": [
    "<span style=\"color:black\"><center>Práctica 2</center></span>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1f74bfee-9d2d-4e14-916d-22415436266d",
   "metadata": {
    "id": "Yjn9f6IPz4pF"
   },
   "source": [
    "## <span style=\"color:blue\">Profesores</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d29d2f3-b573-4163-9b42-9717bd1f7c0a",
   "metadata": {
    "id": "Yjn9f6IPz4pF"
   },
   "source": [
    "1. Alvaro Mauricio Montenegro Díaz, ammontenegrod@unal.edu.co\n",
    "1. Daniel Mauricio Montenegro Reyes, dextronomo@gmail.com\n",
    "1. Campo Elías Pardo Turriago, cepardot@unal.edu.co\n",
    "1. Oleg Jarma, ojarmam@unal.edu.co"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "36190c5e-c2e8-4def-848f-f31bd4133bc9",
   "metadata": {
    "id": "Yjn9f6IPz4pF"
   },
   "source": [
    "##   <span style=\"color:blue\">Asesora Medios y Marketing digital</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e87297ce-c05e-449f-813a-94389f8659f6",
   "metadata": {
    "id": "Yjn9f6IPz4pF"
   },
   "source": [
    "Maria del Pilar Montenegro, pmontenegro88@gmail.com"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "70313b84-d348-4702-b198-f80348c8d4f7",
   "metadata": {},
   "source": [
    "1. ¿Qué pregunta quiero responder?\n",
    "\n",
    "**¿Cómo obtener los titulares de El Tiempo en tiempo real?**\n",
    "\n",
    "Noticias (Ej, El Tiempo):\n",
    "\n",
    "- ¿Cómo hago para acceder a la web, desde Python? ✅ \n",
    "- ¿Cómo manipular el contenido obtenido? -> Beautiful Soup\n",
    "- ¿Cómo sistematizar (Funciones) todo? -> Las cosas en el tiempo\n",
    "\n",
    "Más preguntas... -> Cómo obtener temáticas, palabras claves, resúmenes.\n",
    "\n",
    "2. ¿Qué necesito?\n",
    "\n",
    "- Literatura\n",
    "- Ambiente separado -> paquetes que necesito ✅ \n",
    "- Librerías para acceder a la web -> requests ✅ \n",
    "- Librerías para manipular datos -> pandas\n",
    "- Construir funciones\n",
    "\n",
    "3. Manos a la obra."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b8bde5cd-c675-4b3d-8e39-b6a3370786d4",
   "metadata": {},
   "source": [
    "### Librerías Necesarias "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "0f706c0e-eabc-4548-81e8-1b21827b60e7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests\n",
    "from bs4 import BeautifulSoup\n",
    "from html2text import html2text\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8631a163-16cc-4462-b0f6-f41445fb0b3f",
   "metadata": {},
   "source": [
    "###  Respuesta del servidor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "9f0676ba-5159-4a38-9747-013ca14f0128",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<Response [200]>\n"
     ]
    }
   ],
   "source": [
    "# URL a analizar\n",
    "url = 'https://www.eltiempo.com'\n",
    "# Conectar con la url seleccionada\n",
    "response = requests.get(url)\n",
    "# Mostrar estado de conexión (200 -> OK)\n",
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "id": "062ac8be-a7be-4181-9906-95fd619ab9ac",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Contenido de la url\n",
    "#response.text"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e9bb2f2-b27b-49a3-8bad-1c6a14e60ab6",
   "metadata": {},
   "source": [
    "### Obtener Contenido Específico Web"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "4cdb8b0c-7108-47d4-9f08-17df36aeda8f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Contenido web de manera estructurada\n",
    "soup = BeautifulSoup(response.text, \"html.parser\")\n",
    "### Lo más avanzado, buscar cosas específicas en el HTML obtenido\n",
    "titulos_html = soup.find_all('a',{'class':'title page-link'})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "37475eb8-cebe-414f-8c7f-b432fe870688",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Convertir Contenido HTML a Texto"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "3545f4cc-a9b8-4ed5-9ede-bbed5adfe703",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Pasar html a texto, titulo\n",
    "titulos = [html2text(str(titulo)).split('(')[0] for titulo in titulos_html]\n",
    "# Pasar html a texto, links\n",
    "links = ['('+url+html2text(str(titulo)).split('(')[1] for titulo in titulos_html]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9721be3-5f0d-4fda-92b4-552e709c99ee",
   "metadata": {},
   "source": [
    "### Construir un Dataframe con la información obtenida de la Web"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3323e644-c48d-410c-9713-d43be44f2f6f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# cruzar titulos y links\n",
    "data_raw = zip(titulos,links)\n",
    "# construir dataframe\n",
    "datos = pd.DataFrame(data_raw,columns=['Titular','Link'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fb634e6-fed7-4840-ab4b-69b9c8fc768f",
   "metadata": {},
   "source": [
    "### Limpieza General de Datos"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "68eaa390-c8a9-47e9-a616-acafcb99d343",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[['Visa a Estados Unidos: pasos para solicitarla por primera vez o renovarla'\n",
      "  'https://www.eltiempo.com/mundo/eeuu-y-canada/visa-a-estados-unidos-pasos-para-solicitarla-o-renovarla-713050']\n",
      " ['Edson Velandia, su música, historias y películas en El Cine y Yo'\n",
      "  'https://www.eltiempo.com/cultura/musica-y-libros/en-vivo-edson-velandia-en-el-cine-y-yo-713188']\n",
      " ['Minhacienda analiza si habrá o no nuevos contratos petroleros en Colombia'\n",
      "  'https://www.eltiempo.com/economia/sectores/contratos-petroleros-en-colombia-revaluan-dejar-de-firmarlos-713195']\n",
      " ['Exclusivo: Mauricio Gerlein y su esposa son los dueños de cabaña de la balacera'\n",
      "  'https://www.eltiempo.com/unidad-investigativa/balacera-en-puerto-colombia-mauricio-gerlein-y-esposa-son-duenos-de-cabana-713161']\n",
      " ['Dólar en las nubes: ¿cuáles son los destinos que aún son baratos para viajar?'\n",
      "  'https://www.eltiempo.com/vida/viajar/cuales-son-los-destinos-que-aun-son-baratos-para-viajar-713131']\n",
      " ['Kid Pambelé: así fue el día, hace 50 años, en que le enseñó a ganar a Colombia'\n",
      "  'https://www.eltiempo.com/deportes/otros-deportes/kid-pambele-50-anos-del-primer-titulo-mundial-de-boxeo-para-colombia-713238']\n",
      " ['Los factores que han llevado a Colombia a enfrentar un ‘shock de credibilidad’'\n",
      "  'https://www.eltiempo.com/economia/sectores/los-riesgos-de-la-economia-colombiana-segun-bank-of-america-712924']\n",
      " ['¿Por qué García Márquez no dejó que Bolívar comiera mango?'\n",
      "  'https://www.eltiempo.com/cultura/gastronomia/el-mango-la-tarea-pendiente-de-la-cocina-colombiana-713164']\n",
      " ['Esta es la deuda histórica con el Minciencias que sigue sin saldarse'\n",
      "  'https://www.eltiempo.com/vida/ciencia/minciencias-es-el-ministerio-que-menos-dinero-recibe-en-colombia-por-que-713205']\n",
      " ['Las cuentas para clasificar en la última fecha de la Liga 2022-II'\n",
      "  'https://www.eltiempo.com/deportes/futbol-colombiano/liga-betplay-cuentas-para-clasificar-a-los-cuadrangulares-ultima-fecha-713229']]\n"
     ]
    }
   ],
   "source": [
    "# Limpiar corchetes\n",
    "datos['Titular'] = datos['Titular'].replace('\\[|\\]','',regex=True)\n",
    "# Limpiar paréntesis\n",
    "datos['Link'] = datos['Link'].replace('\\(|\\)','',regex=True)\n",
    "# Limpiar saltos de línea\n",
    "datos['Titular'] = datos['Titular'].replace('\\n',' ',regex=True)\n",
    "datos['Link'] = datos['Link'].replace('\\n','',regex=True)\n",
    "# Verificación\n",
    "print(datos.head(10).values)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e2325a65-cd98-4b3b-8335-cf58e745fc9b",
   "metadata": {},
   "source": [
    "### Sistematización"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "id": "dcdfecc4-b02a-4c7f-9c81-d51642157a61",
   "metadata": {},
   "outputs": [],
   "source": [
    "import re\n",
    "import datetime\n",
    "import requests\n",
    "import pandas as pd\n",
    "from bs4 import BeautifulSoup\n",
    "from html2text import html2text\n",
    "\n",
    "def get_news(url):\n",
    "    # Respuesta del servidor\n",
    "    response = requests.get(url)\n",
    "    # Obtener el código html en estructuras significantes\n",
    "    soup = BeautifulSoup(response.text, \"html.parser\")\n",
    "    \n",
    "    # Segmentar tipo de info según fuente\n",
    "    ### El tiempo\n",
    "    if 'eltiempo' in url:\n",
    "        source = 'eltiempo'\n",
    "        ### Lo más avanzado, sacar info específica\n",
    "        titulos_html = soup.find_all('a',{'class':'title page-link'})\n",
    "    else:\n",
    "        source = 'semana'\n",
    "        ### Lo más avanzado, sacar info específica\n",
    "        titulos_html = soup.find_all('a',{'target':'_self'})\n",
    "        \n",
    "    # Obtener titulos\n",
    "    titulos = [html2text(str(titulo)).split('(')[0] for titulo in titulos_html]\n",
    "    # Obtener links\n",
    "    links = ['('+url+html2text(str(titulo)).split('(')[1] for titulo in titulos_html]\n",
    "    \n",
    "    # Cruzar Datos para DataFrame\n",
    "    data_raw = zip(titulos,links)\n",
    "    # Construir DataFrame\n",
    "    datos = pd.DataFrame(data_raw,columns=['Titular','Link'])\n",
    "    \n",
    "    # Limpieza General (Expresiones Regulares -> Investigar)\n",
    "    datos['Titular'] = datos['Titular'].replace('\\[|\\]','',regex=True)\n",
    "    datos['Link'] = datos['Link'].replace('\\(|\\)','',regex=True)\n",
    "    datos['Titular'] = datos['Titular'].replace('\\n',' ',regex=True)\n",
    "    datos['Link'] = datos['Link'].replace('\\n','',regex=True)\n",
    "    \n",
    "    # Como guardar en archivo .csv???\n",
    "    datos.to_csv(f'{source}_{str(datetime.date.today())}.csv',index=False)\n",
    "    \n",
    "    return datos"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b4d8cd54-ed8d-4955-8c39-ebccf3822b03",
   "metadata": {},
   "source": [
    "### Usar Función Creada"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "id": "89ef1d1d-0f97-4311-aa31-457780507b42",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[['Visa a Estados Unidos: pasos para solicitarla por primera vez o renovarla'\n",
      "  'https://www.eltiempo.com/mundo/eeuu-y-canada/visa-a-estados-unidos-pasos-para-solicitarla-o-renovarla-713050']\n",
      " ['Edson Velandia, su música, historias y películas en El Cine y Yo'\n",
      "  'https://www.eltiempo.com/cultura/musica-y-libros/en-vivo-edson-velandia-en-el-cine-y-yo-713188']\n",
      " ['Minhacienda analiza si habrá o no nuevos contratos petroleros en Colombia'\n",
      "  'https://www.eltiempo.com/economia/sectores/contratos-petroleros-en-colombia-revaluan-dejar-de-firmarlos-713195']\n",
      " ['Exclusivo: Mauricio Gerlein y su esposa son los dueños de cabaña de la balacera'\n",
      "  'https://www.eltiempo.com/unidad-investigativa/balacera-en-puerto-colombia-mauricio-gerlein-y-esposa-son-duenos-de-cabana-713161']\n",
      " ['Dólar en las nubes: ¿cuáles son los destinos que aún son baratos para viajar?'\n",
      "  'https://www.eltiempo.com/vida/viajar/cuales-son-los-destinos-que-aun-son-baratos-para-viajar-713131']\n",
      " ['Kid Pambelé: así fue el día, hace 50 años, en que le enseñó a ganar a Colombia'\n",
      "  'https://www.eltiempo.com/deportes/otros-deportes/kid-pambele-50-anos-del-primer-titulo-mundial-de-boxeo-para-colombia-713238']\n",
      " ['Los factores que han llevado a Colombia a enfrentar un ‘shock de credibilidad’'\n",
      "  'https://www.eltiempo.com/economia/sectores/los-riesgos-de-la-economia-colombiana-segun-bank-of-america-712924']\n",
      " ['¿Por qué García Márquez no dejó que Bolívar comiera mango?'\n",
      "  'https://www.eltiempo.com/cultura/gastronomia/el-mango-la-tarea-pendiente-de-la-cocina-colombiana-713164']\n",
      " ['Esta es la deuda histórica con el Minciencias que sigue sin saldarse'\n",
      "  'https://www.eltiempo.com/vida/ciencia/minciencias-es-el-ministerio-que-menos-dinero-recibe-en-colombia-por-que-713205']\n",
      " ['Las cuentas para clasificar en la última fecha de la Liga 2022-II'\n",
      "  'https://www.eltiempo.com/deportes/futbol-colombiano/liga-betplay-cuentas-para-clasificar-a-los-cuadrangulares-ultima-fecha-713229']\n",
      " ['‘Me enamoré a primera vista, pero terminó siendo una pesadilla. La sigo amando’'\n",
      "  'https://www.eltiempo.com/cultura/gente/me-enamore-pero-termino-siendo-una-pesadilla-la-sigo-amando-712964']\n",
      " ['Caso Maximiliano: encontraron cuerpo que podría ser el de menor desaparecido'\n",
      "  'https://www.eltiempo.com/colombia/medellin/caso-maximiliano-encontraron-cuerpo-que-podria-ser-el-de-menor-713177']\n",
      " ['¿Se debe acabar con el servicio militar obligatorio? El debate está abierto'\n",
      "  'https://www.eltiempo.com/justicia/investigacion/servicio-militar-oligatorio-acabarlo-o-convertirlo-en-social-713214']\n",
      " ['El primero de 3 puentes de la 68 con 26 empezará a operar a principios de 2023'\n",
      "  'https://www.eltiempo.com/bogota/bogota-el-puente-de-la-68-con-26-empezara-a-operar-a-principios-de-2023-713208']\n",
      " ['La Sub-17 se hizo a pulso, sin premios e incluso contra las expectativas'\n",
      "  'https://www.eltiempo.com/podcast/el-primer-cafe/seleccion-colombia-femenina-a-pulso-y-en-polemica-con-federacion-de-futbol-712957']\n",
      " ['El mínimo para 2023'\n",
      "  'https://www.eltiempo.com/opinion/editorial/editorial-de-el-tiempo-del-28-de-octubre-de-2022-el-minimo-para-2023-713224']\n",
      " ['‘Me enamoré a primera vista, pero terminó siendo una pesadilla. La sigo amando’'\n",
      "  'https://www.eltiempo.com/cultura/gente/me-enamore-pero-termino-siendo-una-pesadilla-la-sigo-amando-712964']\n",
      " ['Caso Maximiliano: encontraron cuerpo que podría ser el de menor desaparecido'\n",
      "  'https://www.eltiempo.com/colombia/medellin/caso-maximiliano-encontraron-cuerpo-que-podria-ser-el-de-menor-713177']\n",
      " ['¿Se debe acabar con el servicio militar obligatorio? El debate está abierto'\n",
      "  'https://www.eltiempo.com/justicia/investigacion/servicio-militar-oligatorio-acabarlo-o-convertirlo-en-social-713214']\n",
      " ['El primero de 3 puentes de la 68 con 26 empezará a operar a principios de 2023'\n",
      "  'https://www.eltiempo.com/bogota/bogota-el-puente-de-la-68-con-26-empezara-a-operar-a-principios-de-2023-713208']\n",
      " ['La temporada de lluvias ya deja más de 280 municipios en calamidad pública'\n",
      "  'https://www.eltiempo.com/vida/medio-ambiente/la-temporada-de-lluvias-ya-deja-mas-de-270-municipios-en-calamidad-publica-713210']\n",
      " ['Rechazo por agresión verbal de un conductor a unas guías de tránsito en Bogotá'\n",
      "  'https://www.eltiempo.com/bogota/movilidad-en-bogota-conductor-agrede-a-guias-de-transito-video-713189']\n",
      " ['Antioquia, relatos que conectan'\n",
      "  'https://www.eltiempo.com/mas-contenido/antioquia-una-region-que-es-ejemplo-712039']\n",
      " ['No espere más, compre su carro usado con Mezubo, la financiera digital'\n",
      "  'https://www.eltiempo.com/contenido-comercial/no-espere-mas-compre-su-carro-usado-con-mezubo-la-financiera-digital-706525']\n",
      " ['El mínimo para 2023'\n",
      "  'https://www.eltiempo.com/opinion/editorial/editorial-de-el-tiempo-del-28-de-octubre-de-2022-el-minimo-para-2023-713224']\n",
      " ['Antioquia, relatos que conectan'\n",
      "  'https://www.eltiempo.com/mas-contenido/antioquia-una-region-que-es-ejemplo-712039']\n",
      " ['No espere más, compre su carro usado con Mezubo, la financiera digital'\n",
      "  'https://www.eltiempo.com/contenido-comercial/no-espere-mas-compre-su-carro-usado-con-mezubo-la-financiera-digital-706525']\n",
      " ['Carlos Paniagua, el guía que tiene a la Sub-17 femenina cerca del título mundial'\n",
      "  'https://www.eltiempo.com/deportes/futbol-internacional/carlos-paniagua-quien-es-el-dt-de-la-seleccion-colombia-femenina-sub-17-713231']\n",
      " ['Un caracol fosilizado y un balón gigante, entre las casas más extrañas en Airbnb'\n",
      "  'https://www.eltiempo.com/vida/viajar/airbnb-una-papa-y-un-ovni-entre-las-casas-mas-excentricas-712878']\n",
      " ['Kasia de Qatar: trágico final de princesa que dijo vivir en una ‘jaula de oro’'\n",
      "  'https://www.eltiempo.com/cultura/gente/kasia-de-qatar-la-princesa-que-vivio-en-una-jaula-de-oro-713153']\n",
      " ['Bogotá: así vive una familia el drama de la desaparición de su mamá, de 80 años'\n",
      "  'https://www.eltiempo.com/justicia/servicios/bogota-familia-reporta-desaparicion-de-su-mama-que-padece-de-alzhaimer-713204']\n",
      " ['Doria, 70 años de la pasta más famosa de los colombianos'\n",
      "  'https://www.eltiempo.com/cultura/gastronomia/historia-de-una-marca-713201']\n",
      " ['EL TIEMPO, primer medio de Colombia en Iniciativa de Autenticidad de Contenido'\n",
      "  'https://www.eltiempo.com/economia/empresas/el-tiempo-recibe-distincion-iniciativa-de-autenticidad-de-contenido-cai-713082']\n",
      " ['Elon Musk toma el control de Twitter y despide a tres directivos'\n",
      "  'https://www.eltiempo.com/tecnosfera/novedades-tecnologia/elon-musk-toma-el-control-de-twitter-y-echa-a-directivos-713212']\n",
      " ['El duro rifirrafe entre Rafael Correa y Pacho Santos'\n",
      "  'https://www.eltiempo.com/mundo/latinoamerica/pelea-entre-rafael-correa-y-pacho-santos-para-idiota-no-se-estudia-713185']\n",
      " ['Septiembre se consolida como el mes del sector productivo'\n",
      "  'https://www.eltiempo.comhttps://www.portafolio.co/contenido-patrocinado/septiembre-se-consolida-como-el-mes-del-sector-productivo-572524']\n",
      " ['La dura respuesta de jueces a Claudia López por la inseguridad en Bogotá'\n",
      "  'https://www.eltiempo.com/justicia/investigacion/claudia-lopez-jueces-responden-a-comentarios-por-inseguridad-en-bogota-713200']\n",
      " [\"Rigoberta Menchú: 'El ser humano está en deterioro, no solo el ambiente'\"\n",
      "  'https://www.eltiempo.com/politica/gobierno/rigoberta-menchu-el-ser-humano-esta-en-deterioro-no-solo-el-ambiente-713129']\n",
      " ['La Sub-17 se hizo a pulso, sin premios e incluso contra las expectativas'\n",
      "  'https://www.eltiempo.com/podcast/el-primer-cafe/seleccion-colombia-femenina-a-pulso-y-en-polemica-con-federacion-de-futbol-712957']\n",
      " ['Elon Musk toma el control de Twitter y despide a tres directivos'\n",
      "  'https://www.eltiempo.com/tecnosfera/novedades-tecnologia/elon-musk-toma-el-control-de-twitter-y-echa-a-directivos-713212']\n",
      " ['Caso Surtifruver: ¿qué pasó con los presuntos implicados por homicidio?'\n",
      "  'https://www.eltiempo.com/justicia/investigacion/implicados-por-homicidio-de-dueno-de-tiendas-surtifruver-siguen-libres-713096']\n",
      " ['Embajador británico bailó con reina del Carnaval de Barranquilla: ¿cómo le fue?'\n",
      "  'https://www.eltiempo.com/cultura/gente/embajador-britanico-bailo-con-reina-del-carnaval-de-barranquilla-713219']\n",
      " ['¿Qué falta para que la ley de la paz total sea sancionada por Petro?'\n",
      "  'https://www.eltiempo.com/politica/congreso/paz-total-que-sigue-en-el-congreso-con-esta-ley-713179']\n",
      " [\"'Los recursos para obras de ampliación del José María Córdova están listos'\"\n",
      "  'https://www.eltiempo.com/colombia/medellin/jose-maria-cordova-los-recursos-para-obras-de-ampliacion-estan-listos-712803']\n",
      " ['‘Punisher’, el más controversial de la colección RED'\n",
      "  'https://www.eltiempo.com/cultura/musica-y-libros/punisher-el-mas-controversial-de-la-coleccion-red-713145']\n",
      " [\"Nicolás de Zubiría: 'Cuando ahorraba un peso, lo gastaba en ingredientes'\"\n",
      "  'https://www.eltiempo.com/cultura/gastronomia/nicolas-de-zubiria-estrenara-un-programa-de-television-en-sony-channel-713199']\n",
      " ['Sigue la ofensiva por la seguridad de Bogotá con 8 nuevas capturas'\n",
      "  'https://www.eltiempo.com/bogota/capturas-en-bogota-ofensiva-por-la-seguridad-a-bandas-criminales-713215']\n",
      " [\"'Los recursos para obras de ampliación del José María Córdova están listos'\"\n",
      "  'https://www.eltiempo.com/colombia/medellin/jose-maria-cordova-los-recursos-para-obras-de-ampliacion-estan-listos-712803']\n",
      " ['‘Punisher’, el más controversial de la colección RED'\n",
      "  'https://www.eltiempo.com/cultura/musica-y-libros/punisher-el-mas-controversial-de-la-coleccion-red-713145']\n",
      " [\"Nicolás de Zubiría: 'Cuando ahorraba un peso, lo gastaba en ingredientes'\"\n",
      "  'https://www.eltiempo.com/cultura/gastronomia/nicolas-de-zubiria-estrenara-un-programa-de-television-en-sony-channel-713199']\n",
      " ['Sigue la ofensiva por la seguridad de Bogotá con 8 nuevas capturas'\n",
      "  'https://www.eltiempo.com/bogota/capturas-en-bogota-ofensiva-por-la-seguridad-a-bandas-criminales-713215']]\n"
     ]
    }
   ],
   "source": [
    "# Sirve para El Tiempo y Semana\n",
    "### Tarea: Hacer funcionar también para El Espectador\n",
    "df_news = get_news('https://www.eltiempo.com')\n",
    "print(df_news.values)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}