Beautiful Soup - Instalación
Como BeautifulSoup no es una biblioteca estándar de Python, primero debemos instalarla. Vamos a instalar la biblioteca BeautifulSoup 4 (también conocida como BS4), que es la última.
Para aislar nuestro entorno de trabajo para no perturbar la configuración existente, primero creemos un entorno virtual.
Crear un entorno virtual (opcional)
Un entorno virtual nos permite crear una copia de trabajo aislada de Python para un proyecto específico sin afectar la configuración externa.
La mejor manera de instalar cualquier máquina de paquetes de Python es usando pip, sin embargo, si pip aún no está instalado (puede verificarlo usando - “pip –version” en su comando o línea de comandos), puede instalar dando el siguiente comando:
Entorno Linux
$sudo apt-get install python-pip
Entorno de Windows
Para instalar pip en Windows, haga lo siguiente:
Descargue get-pip.py de https://bootstrap.pypa.io/get-pip.py o desde el github a tu computadora.
Abra el símbolo del sistema y navegue hasta la carpeta que contiene el archivo get-pip.py.
Ejecute el siguiente comando:
>python get-pip.py
Eso es todo, pip ahora está instalado en su máquina con Windows.
Puede verificar su pip instalado ejecutando el siguiente comando:
>pip --version
pip 19.2.3 from c:\users\yadur\appdata\local\programs\python\python37\lib\site-packages\pip (python 3.7)
Instalación de entorno virtual
Ejecute el siguiente comando en su símbolo del sistema:
>pip install virtualenv
Después de ejecutar, verá la siguiente captura de pantalla:
El siguiente comando creará un entorno virtual ("myEnv") en su directorio actual -
>virtualenv myEnv
Captura de pantalla
Para activar su entorno virtual, ejecute el siguiente comando:
>myEnv\Scripts\activate
En la captura de pantalla anterior, puede ver que tenemos "myEnv" como prefijo que nos dice que estamos en el entorno virtual "myEnv".
Para salir del entorno virtual, ejecute deactivate.
(myEnv) C:\Users\yadur>deactivate
C:\Users\yadur>
Cuando nuestro entorno virtual esté listo, ahora instalemos beautifulsoup.
Instalación de BeautifulSoup
Como BeautifulSoup no es una biblioteca estándar, necesitamos instalarla. Vamos a utilizar el paquete BeautifulSoup 4 (conocido como bs4).
Máquina Linux
Para instalar bs4 en Debian o Ubuntu linux usando el administrador de paquetes del sistema, ejecute el siguiente comando:
$sudo apt-get install python-bs4 (for python 2.x)
$sudo apt-get install python3-bs4 (for python 3.x)
Puede instalar bs4 usando easy_install o pip (en caso de que encuentre problemas al instalar usando el empaquetador del sistema).
$easy_install beautifulsoup4
$pip install beautifulsoup4
(Es posible que deba usar easy_install3 o pip3 respectivamente si está usando python3)
Máquina de Windows
Instalar beautifulsoup4 en Windows es muy sencillo, especialmente si ya tienes pip instalado.
>pip install beautifulsoup4
Así que ahora beautifulsoup4 está instalado en nuestra máquina. Hablemos de algunos problemas encontrados después de la instalación.
Problemas después de la instalación
En la máquina con Windows, puede encontrar una versión incorrecta que se instala error principalmente a través de:
error: ImportError “No module named HTMLParser”, entonces debe ejecutar la versión python 2 del código en Python 3.
error: ImportError “No module named html.parser” error, entonces debe estar ejecutando la versión Python 3 del código en Python 2.
La mejor manera de salir de las dos situaciones anteriores es reinstalar BeautifulSoup nuevamente, eliminando por completo la instalación existente.
Si obtienes el SyntaxError “Invalid syntax” en la línea ROOT_TAG_NAME = u '[documento]', entonces necesita convertir el código de python 2 a python 3, simplemente instalando el paquete -
$ python3 setup.py install
o ejecutando manualmente el script de conversión 2 a 3 de python en el directorio bs4 -
$ 2to3-3.2 -w bs4
Instalación de un analizador
De forma predeterminada, Beautiful Soup admite el analizador HTML incluido en la biblioteca estándar de Python, sin embargo, también admite muchos analizadores externos de Python como el analizador lxml o el analizador html5lib.
Para instalar el analizador lxml o html5lib, use el comando -
Máquina Linux
$apt-get install python-lxml
$apt-get insall python-html5lib
Máquina de Windows
$pip install lxml
$pip install html5lib
Generalmente, los usuarios usan lxml para la velocidad y se recomienda usar el analizador lxml o html5lib si está usando una versión anterior de python 2 (antes de la versión 2.7.3) o python 3 (antes de la 3.2.2) ya que el analizador HTML incorporado de Python es no es muy bueno en el manejo de la versión anterior.
Corriendo hermosa sopa
Es hora de probar nuestro paquete Beautiful Soup en una de las páginas html (tomando la página web - https://www.tutorialspoint.com/index.htm, puede elegir cualquier otra página web que desee) y extraer información de ella.
En el siguiente código, intentamos extraer el título de la página web:
from bs4 import BeautifulSoup
import requests
url = "https://www.tutorialspoint.com/index.htm"
req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")
print(soup.title)
Salida
<title>H2O, Colab, Theano, Flutter, KNime, Mean.js, Weka, Solidity, Org.Json, AWS QuickSight, JSON.Simple, Jackson Annotations, Passay, Boon, MuleSoft, Nagios, Matplotlib, Java NIO, PyTorch, SLF4J, Parallax Scrolling, Java Cryptography</title>
Una tarea común es extraer todas las URL dentro de una página web. Para eso solo necesitamos agregar la siguiente línea de código:
for link in soup.find_all('a'):
print(link.get('href'))
Salida
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/about/about_careers.htm
https://www.tutorialspoint.com/questions/index.php
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/codingground.htm
https://www.tutorialspoint.com/current_affairs.htm
https://www.tutorialspoint.com/upsc_ias_exams.htm
https://www.tutorialspoint.com/tutor_connect/index.php
https://www.tutorialspoint.com/whiteboard.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/tutorialslibrary.htm
https://www.tutorialspoint.com/videotutorials/index.php
https://store.tutorialspoint.com
https://www.tutorialspoint.com/gate_exams_tutorials.htm
https://www.tutorialspoint.com/html_online_training/index.asp
https://www.tutorialspoint.com/css_online_training/index.asp
https://www.tutorialspoint.com/3d_animation_online_training/index.asp
https://www.tutorialspoint.com/swift_4_online_training/index.asp
https://www.tutorialspoint.com/blockchain_online_training/index.asp
https://www.tutorialspoint.com/reactjs_online_training/index.asp
https://www.tutorix.com
https://www.tutorialspoint.com/videotutorials/top-courses.php
https://www.tutorialspoint.com/the_full_stack_web_development/index.asp
….
….
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/free_web_graphics.htm
https://www.tutorialspoint.com/online_file_conversion.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/free_online_whiteboard.htm
http://www.tutorialspoint.com
https://www.facebook.com/tutorialspointindia
https://plus.google.com/u/0/+tutorialspoint
http://www.twitter.com/tutorialspoint
http://www.linkedin.com/company/tutorialspoint
https://www.youtube.com/channel/UCVLbzhxVTiTLiVKeGV7WEBg
https://www.tutorialspoint.com/index.htm
/about/about_privacy.htm#cookies
/about/faq.htm
/about/about_helping.htm
/about/contact_us.htm
Del mismo modo, podemos extraer información útil utilizando beautifulsoup4.
Ahora entendamos más sobre "sopa" en el ejemplo anterior.