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, findy content.

solicitudes.get()

.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.

Texto Descripción generado automáticamente

Otra opción es .okque devolverá True para cualquier código de estado por debajo de 400

Texto Descripción generado automáticamente

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 Descripción generado automáticamente

.texto

.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.

Texto Descripción generado automáticamente

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.

Texto Descripción generado automáticamente

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.

Interfaz gráfica de usuario, aplicación, tabla, Excel Descripción generada automáticamente

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *