Alfredo Olmedo
Mas facil (windows)
F12
Te sale el DevTools en los navegadores
Aprender a conectarte a un sitio web desde Python es el primer paso real para hacer web scraping. Con la librería Requests puedes replicar lo que hace tu navegador cuando entras a books.toscrape.com y traer el HTML completo a tu notebook para luego procesarlo.
La idea es simple: tu código se comporta como un visitante invisible que toca la puerta del servidor, pide la página y recibe una respuesta. A partir de ahí empieza todo lo demás.
¿Qué dependencias necesitas para empezar a hacer scraping?
Antes de escribir la primera línea, prepara tu entorno con tres librerías que vas a usar a lo largo del proyecto.
Estas tres trabajan juntas: una pide, otra interpreta y la última almacena. Así de claro [00:18].
¿Qué métodos HTTP existen y cuál debes usar?
Cuando hablamos de HTTP, existen cuatro métodos básicos y cada uno cumple un rol distinto en la comunicación con un servidor [00:30].
Para replicar lo que hace tu navegador al abrir una página, el método correcto es GET. No envías parámetros, solo pides ver el contenido.
¿Qué hace el método GET en HTTP? Solicita un recurso al servidor sin enviar parámetros adicionales. Es el mismo comportamiento que tienes cuando escribes una URL en tu navegador y presionas Enter.
¿Cómo hacer una petición GET con Requests en Python?
La implementación es directa. Defines la URL del sitio y usas el método get de la librería para guardar la respuesta en una variable [01:05].
python import requests
url = "https://books.toscrape.com" response = requests.get(url) print(response)
Al ejecutar, vas a ver algo como <Response [200]>. Ese número es el status code y es la primera pista de si todo salió bien.
¿Qué significa el status code 200 y por qué importa?
El status code 200 indica que la petición se realizó de manera exitosa y que el servidor te devolvió el recurso solicitado. Es el código que quieres ver siempre que estés haciendo scraping.
Pero el objeto response tiene más que un número. También guarda el HTML completo de la página, al que accedes con response.text [01:48].
python print(response.text)
Eso te devuelve todo el HTML del sitio, exactamente lo mismo que verías en tu navegador si presionas Ctrl + U o si entras a las herramientas de desarrollo desde el menú de tres puntos, sección elementos.
¿Cómo validar la respuesta del servidor antes de procesar el HTML?
Mostrar todo el HTML sin verificar primero si la petición fue exitosa es un mal hábito. La buena práctica es comparar el status code antes de seguir [02:46].
python if response.status_code == 200: print("Status code 200, exitoso") print(response.text[0:15]) else: print(response.status_code)
Aquí pasan dos cosas interesantes. Primero, accedes al número puro con response.status_code, distinto a imprimir solo response que devuelve el objeto completo. Segundo, usas slicing de listas ([0:15]) para mostrar solo los primeros 15 caracteres del HTML y no saturar la salida.
¿Cuál es la diferencia entre response y response.status_code?
responsees el objeto completo que devuelve el servidor.response.status_codete entrega solo el número entero del estado, útil para hacer comparaciones directas conif.
¿Qué pasa cuando la URL no existe?
Forzar un error es una forma rápida de entender cómo reacciona tu código. Si modificas la URL agregando una ruta inexistente como libro-ficcion, el servidor responde con un 404 Not Found [03:50].
python url = "https://books.toscrape.com/libro-ficcion" response = requests.get(url) print(response) # <Response [404]> print(response.text) # 404 Not Found, nginx
El mismo error que verías en el navegador, pero ahora capturado en tu código. Eso te permite manejar fallos sin que tu script se rompa.
¿Qué significa el error 404 en una petición HTTP? Significa que el recurso solicitado no existe en el servidor. La URL es válida en sintaxis, pero la página o el archivo al que apunta no se encuentra disponible.
¿Y ahora qué hago con tanto HTML?
Obtener el HTML completo se siente abrumador al principio. Es un bloque enorme de etiquetas, atributos y texto mezclado que parece imposible de aprovechar.
Pero ahí entra la siguiente etapa: limpiar ese contenido y extraer solo lo que te interesa, como títulos, precios y URLs de los libros. Para eso vas a usar Beautiful Soup en la próxima clase.
¿Ya probaste hacer tu primera petición GET? Cuéntame en los comentarios qué status code recibiste y a qué sitio le hiciste scraping.
Aprender a conectarte a un sitio web desde Python es el primer paso real para hacer web scraping. Con la librería Requests puedes replicar lo que hace tu navegador cuando entras a books.toscrape.com y traer el HTML completo a tu notebook para luego procesarlo.
La idea es simple: tu código se comporta como un visitante invisible que toca la puerta del servidor, pide la página y recibe una respuesta. A partir de ahí empieza todo lo demás.
Antes de escribir la primera línea, prepara tu entorno con tres librerías que vas a usar a lo largo del proyecto.
Estas tres trabajan juntas: una pide, otra interpreta y la última almacena. Así de claro [00:18].
Cuando hablamos de HTTP, existen cuatro métodos básicos y cada uno cumple un rol distinto en la comunicación con un servidor [00:30].
Para replicar lo que hace tu navegador al abrir una página, el método correcto es GET. No envías parámetros, solo pides ver el contenido.
¿Qué hace el método GET en HTTP? Solicita un recurso al servidor sin enviar parámetros adicionales. Es el mismo comportamiento que tienes cuando escribes una URL en tu navegador y presionas Enter.
La implementación es directa. Defines la URL del sitio y usas el método get de la librería para guardar la respuesta en una variable [01:05].
python import requests
url = "https://books.toscrape.com" response = requests.get(url) print(response)
Al ejecutar, vas a ver algo como <Response [200]>. Ese número es el status code y es la primera pista de si todo salió bien.
El status code 200 indica que la petición se realizó de manera exitosa y que el servidor te devolvió el recurso solicitado. Es el código que quieres ver siempre que estés haciendo scraping.
Pero el objeto response tiene más que un número. También guarda el HTML completo de la página, al que accedes con response.text [01:48].
python print(response.text)
Eso te devuelve todo el HTML del sitio, exactamente lo mismo que verías en tu navegador si presionas Ctrl + U o si entras a las herramientas de desarrollo desde el menú de tres puntos, sección elementos.
Mostrar todo el HTML sin verificar primero si la petición fue exitosa es un mal hábito. La buena práctica es comparar el status code antes de seguir [02:46].
python if response.status_code == 200: print("Status code 200, exitoso") print(response.text[0:15]) else: print(response.status_code)
Aquí pasan dos cosas interesantes. Primero, accedes al número puro con response.status_code, distinto a imprimir solo response que devuelve el objeto completo. Segundo, usas slicing de listas ([0:15]) para mostrar solo los primeros 15 caracteres del HTML y no saturar la salida.
¿Cuál es la diferencia entre response y response.status_code?
responsees el objeto completo que devuelve el servidor.response.status_codete entrega solo el número entero del estado, útil para hacer comparaciones directas conif.
Forzar un error es una forma rápida de entender cómo reacciona tu código. Si modificas la URL agregando una ruta inexistente como libro-ficcion, el servidor responde con un 404 Not Found [03:50].
python url = "https://books.toscrape.com/libro-ficcion" response = requests.get(url) print(response) # <Response [404]> print(response.text) # 404 Not Found, nginx
El mismo error que verías en el navegador, pero ahora capturado en tu código. Eso te permite manejar fallos sin que tu script se rompa.
¿Qué significa el error 404 en una petición HTTP? Significa que el recurso solicitado no existe en el servidor. La URL es válida en sintaxis, pero la página o el archivo al que apunta no se encuentra disponible.
Obtener el HTML completo se siente abrumador al principio. Es un bloque enorme de etiquetas, atributos y texto mezclado que parece imposible de aprovechar.
Pero ahí entra la siguiente etapa: limpiar ese contenido y extraer solo lo que te interesa, como títulos, precios y URLs de los libros. Para eso vas a usar Beautiful Soup en la próxima clase.
¿Ya probaste hacer tu primera petición GET? Cuéntame en los comentarios qué status code recibiste y a qué sitio le hiciste scraping.
yo estaba probando con otro sitio y me retornaba un error HTTP 402 Payment Required, podría ser que tenía detector de bots o anti-scraping, se soluciona cambiando el encabezado de la solicitud y agregarle User-Agent para simular que la solicitud fue por medio de un navegador, quedando algo como esto:
Alfredo Olmedo
Mas facil (windows)
F12
Te sale el DevTools en los navegadores
Juan Carlos Quishpe
Acceso al sitio web desde el navegador
Se presenta el sitio book.subscribe.com, que permite visualizar una gran cantidad de libros desde el navegador.
Acceso al sitio web mediante código
Se explica cómo acceder a la página usando código desde un notebook, utilizando librerías como requests, BeautifulSoup y csv.
Tipos de peticiones HTTP Se introducen los métodos GET, POST, PUT y DELETE. Se enfatiza que GET es el método utilizado para acceder al sitio web sin parámetros.
Implementación de una petición GET
Se realiza una petición GET al sitio book-to-scrape.com usando la librería requests y se almacena la respuesta en una variable response.
Validación del código de estado (status code)
Se imprime response para verificar el status code. Se menciona que el código 200 indica una petición exitosa.
Visualización del contenido HTML
Se accede al contenido de la respuesta con response.text, lo que devuelve el HTML de la página. Se compara esto con la vista de código fuente en el navegador mediante CTRL+U o las herramientas de desarrollador.
Filtrado de contenido HTML relevante Se plantea que, aunque el HTML completo puede ser confuso, en futuras etapas se filtrarán etiquetas relevantes como títulos, precios y URLs.
Condición IF para respuestas exitosas Se implementa una estructura condicional que verifica si el status code es 200. Si es exitoso, se imprime parte del HTML (primeros 15 caracteres).
Simulación de error 404
Se fuerza un error accediendo a una URL inexistente (libro ficción), lo que genera un status code 404, igual que en el navegador.
José Antonio Alcántara Rosales
cuando realizo la peticion GET me sale el nombre "requests no está definido"
Viviana Lopez
a mi me pasó algo similar, consultale a chatgpt o gemini y te ayudan. En mi caso paso que las librerias se instalaron en la version de python 312, cuando la mia es 311 y la del profe del notebook es 310. Todo se solucionó con este codigo que lo puse al principio. Lo que pasa es que no te esta reconociendo la libreria Request
import sys!{sys.executable} -m pip install requests beautifulsoup4
Juan Diego Ussa Aponte
creo que le faltó ejecutar la parte del código de las librería porque no aparece chuleado
Luis Orna
El comando correcto para instalar Beautiful Soup es beautifulsoup4. Este paquete incluye todas las funcionalidades para trabajar con HTML y XML en Python. Recuerda que es necesario también instalar lxml o html.parser como parser para que funcione correctamente. Si tienes más dudas sobre su uso, puedes revisar la documentación o los materiales de Platzi relacionados con scraping y Python.
Fredy Yecid Castro Agray
realice un par de pruebas y encontre un sitio q no me sale response 403 que el sitio no me permite
David Silgado
On a Mac & Chrome
Command (⌘) + Option (⌥) + U
View Page Source
David Álvaro Joyo Huamán
Metodos:
get: Acceder a un recurso
post:Agregar
put: Remplazar(poner)
delete:Eliminar
pactch:Modifiación parciar