Raspe un sitio web con este hermoso tutorial de Python de sopa

Raspe un sitio web con este hermoso tutorial de Python de sopa

Beautiful Soup es una biblioteca de Python de código abierto. Utiliza analizadores de navegación para extraer el contenido de archivos XML y HTML. Necesita datos para varios propósitos analíticos. Sin embargo, si eres nuevo en Python y web scraping, vale la pena probar la biblioteca Beautiful Soup de Python para un proyecto de web scraping.





Con la biblioteca Beautiful Soup de código abierto de Python, puede obtener datos raspando cualquier parte o elemento de una página web con el máximo control sobre el proceso. En este artículo, veremos cómo puede usar Beautiful Soup para raspar un sitio web.





Cómo instalar Beautiful Soup y empezar a usarlo

Antes de continuar, en este artículo tutorial de Beautiful Soup, usaremos Python 3 y beautifulsoup4 , la última versión de Beautiful Soup. Asegúrese de que crear un entorno virtual de Python para aislar su proyecto y sus paquetes de los de su máquina local.





cómo deshabilitar el inicio rápido de Windows 10

Para comenzar, debe instalar la biblioteca Beautiful Soup en su entorno virtual. Beautiful Soup está disponible como paquete PyPi para todos los sistemas operativos, por lo que puede instalarlo con el pip instalar beautifulsoup4 comando a través del terminal.

Sin embargo, si está en Debian o Linux, el comando anterior aún funciona, pero puede instalarlo con el administrador de paquetes ejecutando apt-get install python3-bs4 .



Beautiful Soup no raspa las URL directamente. Solo funciona con archivos HTML o XML listos para usar. Eso significa que no puede pasar una URL directamente. Para resolver ese problema, debe obtener la URL del sitio web de destino con la biblioteca de solicitudes de Python antes de enviarla a Beautiful Soup.

Para que esa biblioteca esté disponible para su raspador, ejecute el solicitudes de instalación de pip comando a través del terminal.





Para usar la biblioteca del analizador XML, ejecute pip instalar lxml para instalarlo.

Inspeccione la página web que desea raspar

Antes de raspar cualquier sitio web con el que no esté familiarizado, una buena práctica es inspeccionar sus elementos. Puede hacer esto cambiando su navegador al modo de desarrollador. Es bastante fácil de utilizar Chrome DevTools si está utilizando Google Chrome.





Sin embargo, es necesario inspeccionar una página web para saber más sobre sus etiquetas HTML, atributos, clases e identificadores. Hacer eso expone los elementos centrales de una página web y sus tipos de contenido.

También le ayuda a desarrollar las mejores estrategias que puede utilizar para obtener los datos exactos que desea de un sitio web y cómo puede obtenerlos.

Cómo extraer los datos de un sitio web con Beautiful Soup

Ahora que tiene todo listo y listo, abra un editor de código preferido y cree un nuevo archivo Python, dándole un nombre elegido. Sin embargo, también puede hacer uso de IDE basados ​​en web como Jupyter Notebook si no está familiarizado con la ejecución de Python a través de la línea de comandos.

A continuación, importe las bibliotecas necesarias:

|_+_|

En primer lugar, veamos cómo funciona la biblioteca de solicitudes:

|_+_|

Cuando ejecuta el código anterior, devuelve un estado 200, lo que indica que su solicitud se realizó correctamente. De lo contrario, obtiene un estado 400 o algunos otros estados de error que indican una solicitud GET fallida.

Recuerde reemplazar siempre la URL del sitio web entre paréntesis con su URL de destino.

Una vez que obtenga el sitio web con el obtener solicitud, luego lo pasa a Beautiful Soup, que ahora puede leer el contenido como archivos HTML o XML utilizando su analizador XML o HTML incorporado, según el formato elegido.

Eche un vistazo a este siguiente fragmento de código para ver cómo hacer esto con el analizador HTML:

|_+_|

El código anterior devuelve el DOM completo de una página web con su contenido.

También puede obtener una versión más alineada del DOM utilizando el embellecer método. Puedes probar esto para ver su resultado:

|_+_|

También puede obtener el contenido puro de una página web sin cargar su elemento con el .texto método:

|_+_|

Cómo raspar el contenido de una página web por el nombre de la etiqueta

También puede raspar el contenido en una etiqueta particular con Beautiful Soup. Para hacer esto, debe incluir el nombre de la etiqueta de destino en su solicitud de raspador Beautiful Soup.

Por ejemplo, veamos cómo puede obtener el contenido en el h2 etiquetas de una página web.

|_+_|

En el fragmento de código anterior, soup.h2 devuelve el primero h2 elemento de la página web e ignora el resto. Para cargar todos los h2 elementos, puede utilizar el encuentra todos función incorporada y el por bucle de Python:

cómo cambiar al modo creativo
|_+_|

Ese bloque de código devuelve todo h2 elementos y su contenido. Sin embargo, puede obtener el contenido sin cargar la etiqueta utilizando el .cuerda método:

|_+_|

Puede utilizar este método para cualquier etiqueta HTML. Todo lo que necesita hacer es reemplazar el h2 etiqueta con el que te guste.

Sin embargo, también puede raspar más etiquetas pasando una lista de etiquetas en el encuentra todos método. Por ejemplo, el bloque de código a continuación raspa el contenido de a , h2 , y título etiquetas:

|_+_|

Cómo raspar una página web usando el ID y el nombre de la clase

Después de inspeccionar un sitio web con DevTools, le permite saber más sobre los atributos de id y class que contienen cada elemento en su DOM. Una vez que tenga esa información, puede raspar esa página web usando este método. Es útil cuando el contenido de un componente de destino está saliendo de la base de datos.

Puedes usar el encontrar método para los raspadores de identificación y clase. A diferencia del encuentra todos método que devuelve un objeto iterable, el encontrar El método funciona en un solo objetivo no iterable, que es el identificación en este caso. Por lo tanto, no es necesario utilizar el por bucle con él.

Veamos un ejemplo de cómo puede raspar el contenido de una página a continuación usando la identificación:

|_+_|

Para hacer esto para un nombre de clase, reemplace el identificación con clase . Sin embargo, escribiendo clase da como resultado directamente una confusión de sintaxis, ya que Python lo ve como una palabra clave. Para evitar ese error, debe escribir un guión bajo delante de la clase como este: clase_ .

En esencia, la línea que contiene el id se convierte en:

|_+_|

Sin embargo, también puede raspar una página web llamando a un nombre de etiqueta en particular con su identificación o clase correspondiente:

|_+_|

Cómo hacer un raspador reutilizable con una sopa hermosa

Puede crear una clase y poner todo el código anterior en una función en esa clase para crear un raspador reutilizable que obtenga el contenido de algunas etiquetas y sus identificadores. Podemos hacer esto creando una función que acepte cinco argumentos: una URL, dos nombres de etiquetas y sus correspondientes identificadores o clases.

Suponga que desea sacar el precio de las camisas de un sitio web de comercio electrónico. La clase de raspador de ejemplo a continuación extrae las etiquetas de precio y camisa con sus identificadores o clases correspondientes y luego lo devuelve como un marco de datos de Pandas con 'Precio' y Shirt_name como nombres de columna.

Asegúrese de que pip instalar pandas a través de la terminal si aún no lo ha hecho.

|_+_|

El raspador que acaba de crear es un módulo reutilizable y puede importarlo y usarlo en otro archivo de Python. Para llamar al raspar función de su clase, usas scrapeit.scrape ('URL del sitio web', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Si no proporciona la URL y otros parámetros, el demás instrucción le pide que lo haga.

Para usar ese scaper en otro archivo de Python, puede importarlo así:

|_+_|

Nota: scraper_module es el nombre del archivo Python que contiene la clase scraper.

También puede consultar el Documentación de Beautiful Soup si desea profundizar en cómo puede aprovecharlo al máximo.

Beautiful Soup es una valiosa herramienta de raspado web

Beautiful Soup es un poderoso raspador de pantalla de Python que le brinda control sobre cómo se transmiten sus datos durante el raspado. Es una herramienta comercial valiosa, ya que puede brindarle acceso a los datos web de la competencia, como precios, tendencias del mercado y más.

mi computadora portátil dice enchufado no cargando

Aunque hemos creado un raspador de etiquetas en este artículo, aún puede jugar con esta poderosa biblioteca de Python para crear herramientas de raspado más útiles.

Cuota Cuota Pío Correo electrónico Las mejores herramientas de raspado web en línea

¿Necesita recopilar datos de sitios web con fines analíticos? Estas herramientas de raspado web lo hacen fácil.

Leer siguiente
Temas relacionados
  • Programación
  • Pitón
Sobre el Autor Idisou Omisola(94 Artículos publicados)

Idowu es un apasionado de la tecnología inteligente y la productividad. En su tiempo libre, juega con la codificación y cambia al tablero de ajedrez cuando está aburrido, pero también le encanta romper con la rutina de vez en cuando. Su pasión por mostrarle a la gente el camino en torno a la tecnología moderna lo motiva a escribir más.

Más de Idowu Omisola

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse