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 crear un entorno virtual Python para aislar su proyecto y sus paquetes de los de su máquina local.

Para comenzar, debe instalar la biblioteca Beautiful Soup en su entorno virtual. Beautiful Soup está disponible como un paquete PyPi para todos los sistemas operativos, por lo que puede instalarlo con el comando pip install beautifulsoup4 a través de la 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 comando de solicitudes de instalación de pip a través de la terminal.

Para usar la biblioteca del analizador XML, ejecute pip install 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 usar Chrome DevTools si está usando 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:

from bs4 import BeautifulSoup import requests

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

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') print(website)

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 obtiene el sitio web con la solicitud de obtención , 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:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com') soup = BeautifulSoup(website.content, 'html.parser') print(soup)

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 método prettify . Puedes probar esto para ver su resultado:

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.prettify())

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

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.text)

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 las etiquetas h2 de una página web.

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') print(soup.h2)

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

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups)

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

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') h2tags = soup.find_all('h2') for soups in h2tags: print(soups.string)

Puede utilizar este método para cualquier etiqueta HTML. Todo lo que necesitas hacer es reemplazar la etiqueta h2 por la que te guste.

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

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') tags = soup.find_all(['a', 'h2', 'title']) for soups in tags: print(soups.string)

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.

Puede utilizar el método de búsqueda para los raspadores de identificación y clase. A diferencia del método find_all que devuelve un objeto iterable, el método find funciona en un solo objetivo no iterable, que es el id en este caso. Por lo tanto, no necesita usar el bucle for con él.

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

from bs4 import BeautifulSoup import requests website = requests.get('http://somewebpages.com/') soup = BeautifulSoup(website.content, 'html.parser') id = soup.find(id = 'enter the target id here') print(id.text)

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

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

my_classes = soup.find(class_ = 'enter the target class name here') print(my_classes.text)

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:

data = soup.find_all('div', class_ = 'enter the target class name here') print(data)

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 hacer un raspador reutilizable que obtiene 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 instalar pip pandas a través de la terminal si aún no lo ha hecho.

import pandas as pd class scrapeit: try: def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None): if not (website and tag1 and id1 and tag2 and id2)==None: try: page = requests.get(website) soup = BeautifulSoup(page.content, 'html.parser') infotag1 = soup.find_all(tag1, id1) infotag2 = soup.find_all(tag2, id2) priced = [prices.text for prices in infotag1] shirt = [shirts.text for shirts in infotag2] data = { 'Price':priced, 'Shirt_name':shirt} info = pd.DataFrame(data, columns=['Price', 'Shirt_name']) print(info) except: print('Not successful') else: print('Oops! Please enter a website, two tags and thier corresponding ids') except: print('Not successful!')

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

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

from scraper_module import scrapeit scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

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

También puede consultar la documentación de Beautiful Soup si desea profundizar en cómo puede aprovecharla 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.

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.


Cómo usar Python como una calculadora de línea de comandos

Cómo usar Python como una calculadora de línea de comandos

Si bien puede usar una calculadora gráfica en su computadora, el intérprete del lenguaje de programación Python puede funcionar como una calculadora de escritorio. Es una broma de ejecución tan popular en la comunidad de Python que se menciona en el tutorial oficial. Así es como puedes usar Python como calculadora.

Los 8 mejores blogs de Java para programadores

Los 8 mejores blogs de Java para programadores

Como programador, debe enfrentar desafíos para sobrevivir y construir algunas maravillas en el campo del desarrollo o la programación. Por lo tanto, si está buscando aprender un lenguaje de programación avanzado para mejorar sus habilidades profesionales, Java es uno de los mejores prospectos que existen.

7 comandos vitales para comenzar con Python para principiantes

7 comandos vitales para comenzar con Python para principiantes

Aprender un nuevo lenguaje de programación como Python se vuelve fácil si tiene una hoja de ruta completa que detalla qué conceptos aprender como principiante y cómo progresar más para alcanzar el siguiente hito. Incluso los programadores intermedios deberían repasar con frecuencia sus conceptos básicos para construir una base sólida para ellos mismos.

Principios de diseño web receptivo

Principios de diseño web receptivo

Hoy en día, es una práctica común crear un sitio web o una aplicación que ajuste su interfaz de usuario según el navegador o el dispositivo. Hay dos enfoques para lograr este objetivo. La primera implica la creación de diferentes versiones de su sitio web o aplicación para diferentes dispositivos. Pero es ineficiente y puede provocar errores impredecibles.

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Trabajar con números es una parte integral de la programación. Todos los lenguajes de programación brindan soporte para manipular números de muchas formas diferentes. En este artículo, aprenderá a encontrar el número total de dígitos en un entero utilizando enfoques iterativos, basados ​​en registros y basados ​​en cadenas.

Las 9 mejores alternativas de Docker para la gestión de contenedores

Las 9 mejores alternativas de Docker para la gestión de contenedores

Los contenedores son muy beneficiosos para el desarrollo, la implementación y la administración de software en un entorno virtual. Docker es útil en el proceso de contenedorización, pero no es la única plataforma que existe. Si está buscando algunas alternativas a Docker, no busque más. Esta lista muestra algunas alternativas de Docker eficientes y ricas en funciones para usar en su próximo proyecto.

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

Cómo incrustar tweets en sus publicaciones de WordPress

Cómo incrustar tweets en sus publicaciones de WordPress

Incrustar servicios de terceros en sus publicaciones de WordPress es una forma emocionante de cautivar el interés de un visitante. El contenido incrustado también proporciona señales visuales que facilitan el escaneo. WordPress ha facilitado la adición de este tipo de contenido.

Cómo eliminar la carpeta de módulos de nodo con npkill

Cómo eliminar la carpeta de módulos de nodo con npkill

Node.js es un entorno de ejecución de JavaScript que le permite ejecutar JavaScript fuera de los navegadores web, lo que lo convierte en una opción popular para desarrollar todo tipo de aplicaciones. Parte de su popularidad se debe a la gran cantidad de paquetes de NPM que existen para facilitar la experiencia del desarrollador.

Cómo escribir y compilar su primer código de solidez

Cómo escribir y compilar su primer código de solidez

La solidez es el lenguaje de programación utilizado por los contratos inteligentes en la cadena de bloques Ethereum. Es un lenguaje de programación orientado a objetos de tipo estático.

Las 5 mejores insignias que potenciarán su repositorio de GitHub

Las 5 mejores insignias que potenciarán su repositorio de GitHub

Las insignias de GitHub pueden aumentar la legibilidad de un repositorio al proporcionar a los usuarios una forma rápida de capturar las métricas del repositorio. Las insignias se pueden incrustar en su README.md para aclarar la importancia y la necesidad de su proyecto a otros desarrolladores. Como resultado, los lectores obtienen una idea muy rápida del repositorio al verificar las insignias adjuntas.

¿Qué es el Día Internacional de los Programadores? 3 formas de celebrar este año

¿Qué es el Día Internacional de los Programadores? 3 formas de celebrar este año

Los días de celebración internacional son una buena forma de reconocer los asuntos sociales, los días históricos y las respectivas carreras. El Día Internacional de los Programadores celebra el papel que desempeñan los programadores para mejorar la vida cotidiana. El mundo civilizado en el que vivimos es producto del arduo trabajo de los programadores.

¿Cómo funciona el método Python String format ()? 10 ejemplos

¿Cómo funciona el método Python String format ()? 10 ejemplos

Ya sea una consulta de base de datos o resultados de operaciones matemáticas, el método de formato de cadena de Python ofrece una forma más dinámica y atractiva de presentar resultados a un usuario.

Visual Studio 2022 frente a 2019: ¿Debería actualizar ahora? Explicado

Visual Studio 2022 frente a 2019: ¿Debería actualizar ahora? Explicado

A principios de este año, Microsoft lanzó la versión preliminar de Visual Studio 2022 en el salvaje mundo de la programación. ¡Estas son buenas noticias! Es un IDE extremadamente popular, pero debido a una puesta a punto o tal vez incluso una revisión, dado el ritmo de cambio en el ecosistema DevOps en el que prospera.

Una introducción simple a las métricas de software

Una introducción simple a las métricas de software

Las métricas de software son medidas que se utilizan para cuantificar varios aspectos de su software. Estos aspectos pueden variar desde el costo, la calidad y la eficiencia del equipo de desarrollo.

Cómo instalar .NET Framework versión 3.5 en Windows 10

Cómo instalar .NET Framework versión 3.5 en Windows 10

Como usuario de Windows, probablemente al menos una vez se haya encontrado con las palabras .NET Framework. Es un marco de software desarrollado por Microsoft que le permite crear y ejecutar programas C #, C ++, F # y Visual Basic. La última versión de .NET es 4.8, pero es posible que su computadora necesite una versión anterior de .NET (como .NET 3.5) para ejecutar algunas aplicaciones.

Frasco o CherryPy: ¿Qué marco de Python debería usar?

Frasco o CherryPy: ¿Qué marco de Python debería usar?

Si es un desarrollador de Python, puede beneficiarse enormemente de la variedad de marcos disponibles. Si bien algunos marcos son más adecuados para grandes ecosistemas, otros se especializan en cumplir objetivos de desarrollo específicos. Siga leyendo para conocer las características básicas, los usos y las diferencias entre dos marcos de Python: Flask y CherryPy.

Cómo encontrar cubos y cuadrados perfectos de N dígitos usando Python, C ++ y JavaScript

Cómo encontrar cubos y cuadrados perfectos de N dígitos usando Python, C ++ y JavaScript

A muchos programadores les encanta resolver problemas matemáticos complicados utilizando código. Ayuda a agudizar la mente y mejorar la capacidad de resolución de problemas. En este artículo, aprenderá a encontrar los cuadrados y cubos perfectos de n dígitos más pequeños y más grandes utilizando Python, C ++ y JavaScript. Cada ejemplo también contiene una salida de muestra para varios valores diferentes.

Cómo agregar Python a la variable PATH de Windows

Cómo agregar Python a la variable PATH de Windows

Ejecutar Python desde la terminal a menudo es inevitable. Sin embargo, si acaba de instalar Python en Windows 10 por primera vez, ejecutarlo a través de la Terminal de Windows solo es posible si se agrega a la variable de entorno Windows PATH.

Cómo usar la declaración if de Python

Cómo usar la declaración if de Python

La declaración if es la fuerza impulsora de la programación lógica. Como resultado, una mejor comprensión de Pythons es una adición significativa a sus habilidades de programación de Python.

Cómo usar Python como una calculadora de línea de comandos

Cómo usar Python como una calculadora de línea de comandos

Si bien puede usar una calculadora gráfica en su computadora, el intérprete del lenguaje de programación Python puede funcionar como una calculadora de escritorio. Es una broma de ejecución tan popular en la comunidad de Python que se menciona en el tutorial oficial. Así es como puedes usar Python como calculadora.

Los 8 mejores blogs de Java para programadores

Los 8 mejores blogs de Java para programadores

Como programador, debe enfrentar desafíos para sobrevivir y construir algunas maravillas en el campo del desarrollo o la programación. Por lo tanto, si está buscando aprender un lenguaje de programación avanzado para mejorar sus habilidades profesionales, Java es uno de los mejores prospectos que existen.

7 comandos vitales para comenzar con Python para principiantes

7 comandos vitales para comenzar con Python para principiantes

Aprender un nuevo lenguaje de programación como Python se vuelve fácil si tiene una hoja de ruta completa que detalla qué conceptos aprender como principiante y cómo progresar más para alcanzar el siguiente hito. Incluso los programadores intermedios deberían repasar con frecuencia sus conceptos básicos para construir una base sólida para ellos mismos.

Principios de diseño web receptivo

Principios de diseño web receptivo

Hoy en día, es una práctica común crear un sitio web o una aplicación que ajuste su interfaz de usuario según el navegador o el dispositivo. Hay dos enfoques para lograr este objetivo. La primera implica la creación de diferentes versiones de su sitio web o aplicación para diferentes dispositivos. Pero es ineficiente y puede provocar errores impredecibles.

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Trabajar con números es una parte integral de la programación. Todos los lenguajes de programación brindan soporte para manipular números de muchas formas diferentes. En este artículo, aprenderá a encontrar el número total de dígitos en un entero utilizando enfoques iterativos, basados ​​en registros y basados ​​en cadenas.

Las 9 mejores alternativas de Docker para la gestión de contenedores

Las 9 mejores alternativas de Docker para la gestión de contenedores

Los contenedores son muy beneficiosos para el desarrollo, la implementación y la administración de software en un entorno virtual. Docker es útil en el proceso de contenedorización, pero no es la única plataforma que existe. Si está buscando algunas alternativas a Docker, no busque más. Esta lista muestra algunas alternativas de Docker eficientes y ricas en funciones para usar en su próximo proyecto.

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

Cómo incrustar tweets en sus publicaciones de WordPress

Cómo incrustar tweets en sus publicaciones de WordPress

Incrustar servicios de terceros en sus publicaciones de WordPress es una forma emocionante de cautivar el interés de un visitante. El contenido incrustado también proporciona señales visuales que facilitan el escaneo. WordPress ha facilitado la adición de este tipo de contenido.

Cómo eliminar la carpeta de módulos de nodo con npkill

Cómo eliminar la carpeta de módulos de nodo con npkill

Node.js es un entorno de ejecución de JavaScript que le permite ejecutar JavaScript fuera de los navegadores web, lo que lo convierte en una opción popular para desarrollar todo tipo de aplicaciones. Parte de su popularidad se debe a la gran cantidad de paquetes de NPM que existen para facilitar la experiencia del desarrollador.

Cómo escribir y compilar su primer código de solidez

Cómo escribir y compilar su primer código de solidez

La solidez es el lenguaje de programación utilizado por los contratos inteligentes en la cadena de bloques Ethereum. Es un lenguaje de programación orientado a objetos de tipo estático.