Scraping PlutoTV
🧰 Requirements
💾 Instalación (Windows)
Abrir una cmd y ejecutar el siguiente comando:
setup.bat
En caso de no tener permisos para ejecutar el script, ejecutar el siguiente comando:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
Los resultados completos se encuentran en la carpeta data/resultados
📚 Objetivos Generales
- ✅ Imprimir el tiempo de ejecución en el script
- ✅ Si es posible obtener mas información/metadata por cada contenido.
- ✅ Analisis y/o limpieza de Metadata.
- ✅ Otros campos que consideren relevantes
- ✅ Tiempo de ejecución menor a 2hs. (En mi caso fue de 135.61 segundos)
[!NOTE]
Me quede con toda la información que considere relevante
📚 Objetivos On Demand
Obtener todas las películas y series. Obtener la metadata de cada contenido:
- ✅ título
- año (No se encontraba en la web)
- ✅ Sinopsis
- ✅ Link
- ✅ duración (solo para movies).
- ✅ Episodios de cada serie
- ✅ Metadata de los episodios.
[!NOTE]
Separe las peliculas/series por categorias
Ejemplo de peliculas | categoria "La mejor_compañía"
"la_mejor_compañía_movies": {
"count": 19,
"movies": [
{
"titulo": "Pet Obsessed",
"metadatos": [
"TV-G",
"News & Information",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/series/645ab1ce5348f4001a21019c/details?lang=en",
"descripcion": "Con clips ridículos, cortos digitales y toneladas de pelusa; estas son las mascotas más escandalosas y francas de Internet... Tu nueva obsesión."
},
{
"titulo": "Yo amo a Shakey",
"metadatos": [
"PG",
"Children & Family",
"1hr 42 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/5f3fd896ad190c001a52e6da/details?lang=en",
"descripcion": "JT O’Neil, con su hija de 10 años, y su devoto perro Shakey se mudan a una pequeña ciudad de Chicago y al no leer la letra pequeña de su contrato de alquiler, JT se ve obligado a tratar de deshacerse de su perro."
},
{
"titulo": "Shelby",
"metadatos": [
"TV-G",
"Children & Family",
"1hr 32 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/5fad4a7f8b78ef001aa27bcd/details?lang=en",
"descripcion": "Shelby es un perro sin dueño que tiene por costumbre fugarse de la perrera cada vez que tiene la oportunidad. Durante una de sus escapadas conoce a Jake, un niño que sueña con ser un gran mago, y se hacen amigos inseparables."
},
{
"titulo": "Chiguagua: el fantasma",
"metadatos": [
"TV-PG",
"Children & Family",
"1hr 22 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/62bcab10e9e8c00013709d5a/details?lang=en",
"descripcion": "Al heredar una antigua casa de vacaciones, los Fastener se dan cuenta que la perra de sus antepasados, Sophie los persigue. Homer, su golden retriever, se hace amigo de Sophie y descubre que ella solo está buscando una familia a la que amar"
},
{
"titulo": "Max salva al Mundo",
"metadatos": [
"Children & Family",
"1hr 28 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/60c8abd436537d0013320af4/details?lang=en",
"descripcion": "Sean y su perro Max quieren ser detectives pero en su vecindario no sucede nada hasta que desaparece un diamante. Ahora tendrán que enfrentarse a un grupo de alienígenas que vienen al planeta con planes de quemar la Tierra."
},
{
"titulo": "Benny , El Feo",
"metadatos": [
"TV-PG",
"Children & Family",
"1hr 39 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/62bf09238672a30013bd7ef8/details?lang=en",
"descripcion": "Es la historia de un perro sin buena apariencia, sus dueños no tenian idea de que hacer con el cachorro extraño. Pero su ternura logro que una familia lo adoptara y desde ese momento la vida de Benny ha cambiado totalmente."
},
{
"titulo": "Un amor hasta las patas",
"metadatos": [
"TV-PG",
"Comedy",
"1hr 26 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/603e6222049634001a5f3418/details?lang=en",
"descripcion": "Su amiga Roxana decide conseguirle una cita a través de las redes sociales. El desastre de la cita la lleva a pedirle un deseo a un mágico \"gato de los deseos\": tener un novio tan tierno y comprensible como sus 2 adorables perros."
},
{
"titulo": "Mi Angel Guardián",
"metadatos": [
"TV-PG",
"Children & Family",
"1hr 25 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/60c8abc136537d0013320966/details?lang=en",
"descripcion": "Cooper, un perro, es el único sobreviviente de un terrible accidente automovilístico. Jake pierde a su esposa e hijos en el accidente. Jake es de enojo hacia el perro, pero este vinculo termina siendo lo unico que lo ayuda a seguir viviendo."
},
{
"titulo": "Amor por el Perro",
"metadatos": [
"Children & Family",
"1hr 21 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/5fda4095aabcdd001aaf4430/details?lang=en",
"descripcion": "Cuando una madre divorciada intenta iniciar una nueva relación, sus hijos y su perro comienzan a sabotear el romance. Tienen éxito, hasta que aparece un ex novio de la escuela."
},
{
"titulo": "¿EI, Dónde está mi Perro?",
"metadatos": [
"TV-PG",
"Children & Family",
"1hr 22 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/5fda414b0dddaf0013b83734/details?lang=en",
"descripcion": "Un joven llamado Ray se queda en casa para cuidar al perro de la familia, Harry, para demostrarles a sus padres que no es, como dicen, \"irresponsable\"."
},
{
"titulo": "El refugio",
"metadatos": [
"TV-PG",
"Children & Family",
"1hr 24 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/62ffebd0c24630001a8b226c/details?lang=en",
"descripcion": "La familia Davis es un desastre, pero un perro callejero logrará en poco tiempo restaurar su matrimonio, arreglar una relación padre-hijo deteriorada, alegrar la vida de un niño de 9 años y salvar a un niño muy pequeño."
},
{
"titulo": "Un equipo incomparable",
"metadatos": [
"TV-PG",
"Children & Family",
"1hr 20 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/62fe9e866df8ae001a0464ae/details?lang=en",
"descripcion": "Seeker, un perro que no puede oler, y Fetch, un cerdo casi ciego ayudan a mascotas perdidas a encontrar sus hogares."
},
{
"titulo": "De patitas a la calle",
"metadatos": [
"TV-G",
"Children & Family",
"1hr 23 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/60e459453988a50013b7617f/details?lang=en",
"descripcion": "Una perra llamada Lasmi se perdió en la ciudad de Lima. Un grupo de patrulla canina la ayuda a encontrar a su familia. Pero un grupo de traficantes está secuestrando perros, por lo que deben descubrirlos y atraparlos."
},
{
"titulo": "K-9 Aventuras: Un Cuento de Navidad",
"metadatos": [
"TV-G",
"Children & Family",
"1hr 29 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/61f2a44d04ff25001a4fe790/details?lang=en",
"descripcion": "Kassie, sus amigos y su perro, Scoot, organizan una recaudación de fondos para las fiestas, pero deben proteger el dinero de algunos ladrones para poder salvar la Navidad."
},
{
"titulo": "Smitty",
"metadatos": [
"TV-PG",
"Children & Family",
"1hr 34 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/60c8abbc36537d00133208f2/details?lang=en",
"descripcion": "Ben, un chico de trece años, lleva a cabo continuas travesuras que traen de cabeza a su madre, una mujer soltera que lucha cada día por intentar salir adelante sin una pareja que le ayude a tratar que el comportamiento de su hijo mejore."
},
{
"titulo": "La Mejor Amiga de Summer",
"metadatos": [
"Children & Family",
"1hr 41 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/60bf7276d782df0013ef296c/details?lang=en",
"descripcion": "El brillante e independiente Summer Larsen, de 12 años, rescata a un dulce perro callejero y no se detendrá ante nada para salvarlo. Y es su determinación lo que finalmente impacta a quienes la rodean."
},
{
"titulo": "El perrito Pudsey",
"metadatos": [
"PG",
"Children & Family",
"1hr 27 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/5f7b86a0e4b56900138b713a/details?lang=en",
"descripcion": "En la ciudad de Londres Pudsey es feliz con su vida de perro callejero, pero un día su vida cambiará radicalmente. Molly, George y Tommy son tres hermanos que deciden acogerlo en la familia. Todo cambia tras la muerte de su padre."
},
{
"titulo": "El Sol de Medianoche",
"metadatos": [
"TV-PG",
"Children & Family",
"1hr 36 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/60bf7226d782df0013ef25df/details?lang=en",
"descripcion": "En las heladas tierras del norte de Canadá, el joven Luke desafiará los peligros de la naturaleza y la dura inclemencia del tiempo invernal para ayudar a un joven oso polar a que se reúna con su madre."
},
{
"titulo": "Una verdadera amistad",
"metadatos": [
"Children & Family",
"1hr 30 min",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/movies/5fda409aaabcdd001aaf44a0/details?lang=en",
"descripcion": "Finn es un niño de 13 años que es acosado constantemente en la escuela, pero su vida comienza a cambiar el día que conoce a un labrador llamado Marshall, que vive en condiciones extremas y necesita atención médica."
}
]
},
Ejemplo de Series | categoria "Series Checas"
"series_checas_movies": {
"count": 2,
"movies": [
{
"titulo": "Los Misterios de Praga",
"metadatos": [
"PG-13",
"Thriller",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/series/64651a58f2a541001b7d2df6/details?lang=en",
"descripcion": "Praga, década de 1920. El inspector Budik investiga una serie de asesinatos más atroces.",
"temporadas": {
"Temporada 1": [
{
"Titulo": "Episode 1",
"Link": "/latam/on-demand/series/64651a58f2a541001b7d2df6/season/1/episode/646525ae188649001a2ba6d3",
"Descripción": "Praga, década de 1920. El inspector Budik investiga una serie de asesinatos más atroces.",
"Metadata": "T1E1 1hr 5 min"
},
{
"Titulo": "Episode 2",
"Link": "/latam/on-demand/series/64651a58f2a541001b7d2df6/season/1/episode/646525ab188649001a2ba552",
"Descripción": "El cuerpo de un niño es descubierto en un estanque en las afueras de Praga. El desgarrador caso tiene connotaciones sexuales que el inspector Budik debe desentrañar.",
"Metadata": "T1E2 1hr 9 min"
},
{
"Titulo": "Episode 3",
"Link": "/latam/on-demand/series/64651a58f2a541001b7d2df6/season/1/episode/646525c8188649001a2bae87",
"Descripción": "Un robo sale mal y termina con el asesinato de un hombre. Los motivos parecen estar ocultos en un libro religioso que se encuentra cerca del cuerpo.",
"Metadata": "T1E3 1hr 6 min"
},
{
"Titulo": "Episode 5",
"Link": "/latam/on-demand/series/64651a58f2a541001b7d2df6/season/1/episode/64651a5ef2a541001b7d317e",
"Descripción": "Un héroe de guerra es asesinado. El inspector Budik investiga el crimen que parece estar motivado por la traición.",
"Metadata": "T1E5 1hr 3 min"
},
{
"Titulo": "Episode 6",
"Link": "/latam/on-demand/series/64651a58f2a541001b7d2df6/season/1/episode/64651a5af2a541001b7d2ec7",
"Descripción": "Cuandi las ropas de una mujer son encontradas en la orilla del río, el inspector Budik se pregunta si se trata de un caso de suicidio o asesinato.",
"Metadata": "T1E6 1hr 5 min"
},
{
"Titulo": "Episode 7",
"Link": "/latam/on-demand/series/64651a58f2a541001b7d2df6/season/1/episode/64651bc5188649001a2b7d69",
"Descripción": "En las afueras de Praga, un granjero es encontrado con un disparo en la cabeza y otro en el pecho. Un matrimonio parece ser la clave de este caso.",
"Metadata": "T1E7 1hr 7 min"
},
{
"Titulo": "Episode 8",
"Link": "/latam/on-demand/series/64651a58f2a541001b7d2df6/season/1/episode/64651d2da7ef77001a744c37",
"Descripción": "Un hombre millonario que intenta sacar a su hija de la cárcel es encontrado muerto. El inspector Budik debe averiguar si hay un complot en la prisión detrás del crimen.",
"Metadata": "T1E8 1hr 8 min"
},
{
"Titulo": "Episode 9",
"Link": "/latam/on-demand/series/64651a58f2a541001b7d2df6/season/1/episode/64651d4fa7ef77001a744f2c",
"Descripción": "Una intrincada red de relaciones y adicciones termina con el asesinato de una mujer profundamente religiosa.",
"Metadata": "T1E9 1hr 7 min"
},
{
"Titulo": "Episode 10",
"Link": "/latam/on-demand/series/64651a58f2a541001b7d2df6/season/1/episode/64651e92a7ef77001a7450aa",
"Descripción": "Cadáver de un joyero es encontrado con una herida mortal en la cabeza. Los únicos sospechosos son dos monjes solitarios",
"Metadata": "T1E10 1hr 3 min"
}
]
}
},
{
"titulo": "Las Muertes de Medusa",
"metadatos": [
"PG-13",
"Thriller",
"There are no inadequacies"
],
"link": "https://pluto.tv/latam/on-demand/series/64651d32a7ef77001a744d1d/details?lang=en",
"descripcion": "A raíz de una serie de asesinatos violentos, un equipo de investigación élite de homicidios descubre una poderosa organización criminal.",
"temporadas": {
"Temporada 1": [
{
"Titulo": "Episode 1",
"Link": "/latam/on-demand/series/64651d32a7ef77001a744d1d/season/1/episode/646530df649e97001b31fdb7",
"Descripción": "A raíz de una serie de asesinatos violentos, un equipo de investigación élite de homicidios descubre una poderosa organización criminal.",
"Metadata": "T1E1 57 min"
},
{
"Titulo": "Episode 2",
"Link": "/latam/on-demand/series/64651d32a7ef77001a744d1d/season/1/episode/646530dc649e97001b31fc3a",
"Descripción": "El equipo investiga al asesino de una estudiante de secundaria que fue encontrada violada y golpeada en un estanque.",
"Metadata": "T1E2 57 min"
},
{
"Titulo": "Episode 3",
"Link": "/latam/on-demand/series/64651d32a7ef77001a744d1d/season/1/episode/646530e2649e97001b31ff37",
"Descripción": "El equipo investiga el brutal asesinato de un administrador local encontrado en un antiguo castillo.",
"Metadata": "T1E3 58 min"
},
{
"Titulo": "Episode 4",
"Link": "/latam/on-demand/series/64651d32a7ef77001a744d1d/season/1/episode/646530e4649e97001b320024",
"Descripción": "La muerte de una anciana local revela disputas familiares y secretos del pasado de la víctima y su asesino",
"Metadata": "T1E4 59 min"
},
{
"Titulo": "Episode 5",
"Link": "/latam/on-demand/series/64651d32a7ef77001a744d1d/season/1/episode/646530eb649e97001b3201cb",
"Descripción": "En el ensayo general de reinado de belleza, una de las participantes se lastima y luego muere. El equipo investiga un entorno lleno de rivalidad y resentimientos.",
"Metadata": "T1E5 1hr"
},
{
"Titulo": "Episode 6",
"Link": "/latam/on-demand/series/64651d32a7ef77001a744d1d/season/1/episode/646530ee649e97001b32028d",
"Descripción": "Un secreto desgarrador vincula la construcción de un campo de golf que destruye un bosque local y la muerte de un trabajador forestal.",
"Metadata": "T1E6 52 min"
},
{
"Titulo": "Episode 7",
"Link": "/latam/on-demand/series/64651d32a7ef77001a744d1d/season/1/episode/64651d33a7ef77001a744d3c",
"Descripción": "Durante el rodaje de una película, un productor recibe un disparo en la cabeza. La investigación revela un intrincado mundo de secretos y abusos.",
"Metadata": "T1E7 56 min"
},
{
"Titulo": "Episode 8",
"Link": "/latam/on-demand/series/64651d32a7ef77001a744d1d/season/1/episode/64651d42a7ef77001a744e3c",
"Descripción": "Tras un accidente automovilístico, el cadáver de un hombre es encontrado. Sin embargo, los motivos de su fallecimiento parecen ser diferentes al choque.",
"Metadata": "T1E8 1hr"
}
]
}
}
]
},
📚 Objetivos LiveTV
- ✅ Traer todos los canales
- Traer la grilla de contenidos con sus
- ✅ Titulo
- ✅ Horarios
- ✅ Link
[!NOTE]
Separe los canales según su categoria, el json completo se encuenta en Canales
Ejemplo de los canales en la categoria Retro
"Retro": [
{
"canal": "Pluto TV Series Retro",
"descripcion": "En Pluto TV Series Retro vas a poder divertirte y entretenerte con las mejores sitcoms de la historia de la televisión y éxitos clásicos como Who ìs the boss?, The Three Stooges, Popeye the Sailor and Romance of Betty Boop.",
"link": "https://pluto.tv/latam/live-tv/5de802659167b10009e7deba/details?lang=en",
"programas": [
{
"programa 0": [
"Now 12:45",
"Guardianes de la Bahía"
],
"link": "https://pluto.tv/live-tv/5de802659167b10009e7deba"
},
{
"programa 1": [
"On Next:",
"Guardianes de la Bahía",
"12:46 - 13:43"
],
"link": "https://pluto.tv/live-tv/5de802659167b10009e7deba/details/66bd082646762a00085d2227"
},
{
"programa 2": [
"On Later:",
"Guardianes de la Bahía: Refugiame",
"13:43 - 14:42"
],
"link": "https://pluto.tv/live-tv/5de802659167b10009e7deba/details/66bd082646762a00085d2228"
}
]
},
{
"canal": "MacGyver",
"descripcion": "MacGyver, la popular série de acción y aventuras de los 80 está en PlutoTv. Descubre como su protagonista, resuelve problemas peligrosos utilizando su ingenio y habilidades científicas en lugar de armas.",
"link": "https://pluto.tv/latam/live-tv/63eb95baa99571000898a078/details?lang=en",
"programas": [
{
"programa 0": [
"Now 12:45",
"MacGyver",
"57 min left"
],
"link": "https://pluto.tv/live-tv/63eb95baa99571000898a078"
},
{
"programa 1": [
"On Next:",
"MacGyver",
"13:43 - 14:41"
],
"link": "https://pluto.tv/live-tv/63eb95baa99571000898a078/details/668f0f3c32e253000841dd5f"
},
{
"programa 2": [
"On Later:",
"MacGyver",
"14:41 - 15:39"
],
"link": "https://pluto.tv/live-tv/63eb95baa99571000898a078/details/668f0f3c32e253000841dd60"
}
]
},
{
"canal": "Pluto TV Retro Cartoons",
"descripcion": "Pluto TV Retro Cartoons: Enciende la máquina del tiempo y viaja a la época de las mejores animaciones. Vuelve a ser un niño mirando las caricaturas que marcaron tu vida: Popeye, Betty Boop, Flash Gordon y mucho más. Solo en Pluto TV.",
"link": "https://pluto.tv/latam/live-tv/60142258a54aeb0007751c15/details?lang=en",
"programas": [
{
"programa 0": [
"Now 12:45",
"Cuentos de la Cripta",
"6 min left"
],
"link": "https://pluto.tv/live-tv/60142258a54aeb0007751c15"
},
{
"programa 1": [
"On Next:",
"Cuentos de la Cripta",
"12:52 - 13:20"
],
"link": "https://pluto.tv/live-tv/60142258a54aeb0007751c15/details/66bbe42a46762a00085b38a2"
},
{
"programa 2": [
"On Later:",
"Cuentos de la Cripta",
"13:20 - 13:47"
],
"link": "https://pluto.tv/live-tv/60142258a54aeb0007751c15/details/66bbe42a46762a00085b38a3"
}
]
}
],
🧑💼 Identificar modelo de negocio.
-
Monetización a través de la publicidad: Los datos extraídos facilitan entender qué contenido es más popular para optimizar la colocación de anuncios.
-
Análisis de datos para optimización: La recopilación de metadatos como títulos, descripciones y links permite analizar tendencias y preferencias, lo que guía decisiones sobre qué nuevos contenidos adquirir o desarrollar.
-
Estrategias para aumentar la retención de usuarios: Utilizando el análisis continuo de datos, Pluto TV puede adaptar su oferta y mejorar la plataforma para retener usuarios y atraer nuevos espectadores.
🤝 Contruibuir
Para asegurarnos de que estamos en la rama main, antes de crear una mara
git branch
Si ya creamos una rama y queremos ir a esa, usamos
git checkout {nombre-rama}
Si no existe la rama, la creamos con un nombre descriptivo
git branch {nombre-rama}
Para movernos despues de crearla
git checkout -b {nombre-rama}
Una vez que estamos en la rama, hacemos un pull para asegurarnos de que estamos actualizados
git pull origin main
Hacemos la pull request
git add .
git commit -m "Mensaje descriptivo"
git push origin {nombre-rama}
📁Estructura
📁 SCRAPING_PELICULAS_SERIES/
│
├── 📂 data/
│ └── (posibles archivos JSON o de salida aquí)
│
├── 📂 env/
│ └── (entorno virtual u otros archivos relacionados)
│
├── 📂 scraping_canales/
│ ├── 🐍 __init__.py
│ ├── 🐍 scraping_links.py
│ └── 🐍 scraping.py
│
├── 📂 scraping_peliculas_series/
│ ├── 🐍 __init__.py
│ └── 🐍 scraping.py
│
├── 📂 config/
│ ├── 🐍 __init__.py
│ └── 🐍 driver.py
│
├── 📂 utils/
│ ├── 🐍 __init__.py
│ ├── 🛠️ configs.py
│ ├── 🔄 fetch_utils.py
│ ├── 🔍 scraping_utils.py
│ ├── 📝 utils_json.py
│ ├── 🧰 main.py
│ ├── 🕷️ scraper.py
│ └── 🔍 scraping.py
│
├── 🛡️ .gitignore
├── ⚙️ chromedriver.exe
├── 🧰 main.py
├── 📄 README.md
├── 📦 requirements.txt
└── 📝 setup.ps1