Beautiful Soup: analizar solo la sección de un documento

Hay varias situaciones en las que desea extraer tipos específicos de información (solo etiquetas <a>) utilizando Beautifulsoup4. La clase SoupStrainer en Beautifulsoup le permite analizar solo una parte específica de un documento entrante.

Una forma es crear un SoupStrainer y pasarlo al constructor Beautifulsoup4 como el argumento parse_only.

Colador de sopa

Un SoupStrainer le dice a BeautifulSoup qué partes extraen, y el árbol de análisis consta solo de estos elementos. Si reduce la información requerida a una parte específica del HTML, esto acelerará el resultado de la búsqueda.

product = SoupStrainer('div',{'id': 'products_list'})
soup = BeautifulSoup(html,parse_only=product)

Las líneas de código anteriores analizarán solo los títulos de un sitio de producto, que puede estar dentro de un campo de etiqueta.

De manera similar, como arriba, podemos usar otros objetos soupStrainer para analizar información específica de una etiqueta HTML. A continuación se muestran algunos de los ejemplos:

from bs4 import BeautifulSoup, SoupStrainer

#Only "a" tags
only_a_tags = SoupStrainer("a")

#Will parse only the below mentioned "ids".
parse_only = SoupStrainer(id=["first", "third", "my_unique_id"])
soup = BeautifulSoup(my_document, "html.parser", parse_only=parse_only)

#parse only where string length is less than 10
def is_short_string(string):
   return len(string) < 10
   
only_short_strings =SoupStrainer(string=is_short_string)