Web scraping con Python: Solicitudes
El raspado web es el proceso de extracción de datos de sitios web. Puede ser tan simple como copiar y pegar manualmente desde una página web. Sin embargo, más comúnmente se refiere al uso de scripts o bots para extraer los datos automáticamente.
Contenido
Peticiones
El paquete Requests es uno de los paquetes más descargados para Python. Tiene un promedio de alrededor de 30 millones de descargas por semana (Solicitudes, 2023). Las solicitudes brindan la capacidad de consultar el código HTML de una página web a través de Python. Si bien su uso más común es como una herramienta API, también es excelente para extraer información de HTML sin tener que depender de un navegador.
Debido a su popularidad, las solicitudes vienen incluidas en muchas distribuciones populares de Python, incluida Anaconda. Si su instalación no tiene solicitudes, simplemente ejecute una instalación de Pip desde el símbolo del sistema o terminal.
Un tutorial completo sobre el paquete de solicitudes podría ocupar un curso de Udacity. Este artículo de blog se centrará en la interacción con los códigos de estado HTML y HTTP para proporcionar una idea de cómo responde una página web. Este artículo cubrirá la .get()
método para llamar a una URL. A partir de ahí, aprenderemos a utilizar métodos adicionales como status_code, text, find
y content
.
solicitudes.get()
Té .get()
El método de las solicitudes funciona pasando una URL. Esto devuelve el código html que conforma la URL en cuestión. En este ejemplo, vamos a ver el sitio web principal de Udacity. Tenga en cuenta la salida: <Response [200]>.
Este es el código de estado HTML.
Código de estado
Status_code
se puede utilizar para devolver los códigos de estado HTTP de un sitio web. Esto puede proporcionar información vital sobre cómo está respondiendo un sitio web.
Los códigos de estado HTTP funcionan de la siguiente manera:
- 100’s la solicitud fue recibida
- 200’s la solicitud se actuó con éxito
- 300’s la solicitud requería una redirección
- error del cliente 400
- error del servidor 500
Básicamente, al monitorear la respuesta de un sitio web, un código de respuesta que comienza con 1, 2 o 3 significa que la página funciona bien. 4 o 5 muestran que el sitio web no responde. Puede usar status_code
para obtener el código de estado directo que puede pasar a una variable.
Otra opción es .ok
que devolverá True para cualquier código de estado por debajo de 400
Cualquiera status_code
oro ok
son excelentes para crear un script que monitoree la capacidad de respuesta del sitio web. Si está monitoreando un conjunto de sitios web, este script puede alertarlo sobre problemas antes de que los correos electrónicos de quejas comiencen a llegar.
Se acabó el tiempo
Hablando de capacidad de respuesta. A veces, los problemas con una página web pueden causar una .get()
solicitud para colgar. Esto puede durar unos segundos, unas horas o hasta que se emita un comando de interrupción. Una forma de evitar esto es simplemente agregar un argumento de tiempo de espera. En el siguiente ejemplo, la llamada expirará después de 3 segundos si no hay respuesta.
.texto
Té .text
método devuelve el código HTML detrás del sitio web.
El HTML de un sitio web a veces puede ser un poco abrumador, por lo que agregar una segmentación (como se muestra a continuación) al r.text
El comando devuelve solo los primeros 150 caracteres.
Desafortunadamente, el .text
El método devuelve texto sin procesar y no proporciona ningún análisis de HTML. Para eso, necesitará usar un paquete de análisis como Hermosa sopa. .text
tiene un .find
método que permite buscar el texto sin procesar del HTML. En el siguiente ejemplo, find
devuelve la posición inicial del carácter de la palabra Udacity en el código HTML. Entonces, mirando el ejemplo de la segmentación anterior, puede ver que la U en Udacity es el 122n / A carácter en esa cadena de texto.
Té r.content
al principio se ve como r.text
salida, pero mientras r.text
es Unicode, r.content
es una salida de bytes, lo que significa que puede manejar cosas más allá del texto, como imágenes. r.content
también se puede utilizar para guardar el código HTML en un formato de archivo.
Este es un gran método para monitorear los cambios en un sitio web o crear instantáneas de cómo se estaba desempeñando un sitio web en un momento específico.
Conclusión
Si bien las solicitudes de paquetes de Python en realidad están más orientadas a trabajar con API, pueden ser una herramienta útil para el rastreo web básico y el monitoreo de sitios web. Agregar herramientas de análisis como Beautifulsoup puede mejorar enormemente el trabajo con HTML en Python. Sin embargo, a veces una búsqueda de texto sin formato o poder almacenar el código HTML como archivo es realmente todo lo que se necesita.
¿Está interesado en ampliar sus habilidades con Python? Udacity ofrece una variedad de cursos de Python para cualquier nivel de habilidad. Recién comenzando, pruebe nuestra Introducción a la programación Nanodegree y aprenda los conceptos básicos de codificación. Ya tiene una base de codificación, pruebe nuestro programa de Nanogrado intermedio de Python para aprender temas y habilidades de Python más avanzados.