Beautiful Soup - Analyse uniquement la section d'un document

Il existe plusieurs situations dans lesquelles vous souhaitez extraire des types d'informations spécifiques (uniquement des balises <a>) à l'aide de Beautifulsoup4. La classe SoupStrainer de Beautifulsoup vous permet d'analyser uniquement une partie spécifique d'un document entrant.

Une façon est de créer un SoupStrainer et de le transmettre au constructeur Beautifulsoup4 en tant qu'argument parse_only.

Soupe Passoire

Un SoupStrainer indique à BeautifulSoup quelles parties sont extraites et l'arborescence d'analyse se compose uniquement de ces éléments. Si vous restreignez vos informations requises à une partie spécifique du HTML, cela accélérera vos résultats de recherche.

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

Les lignes de code ci-dessus analyseront uniquement les titres d'un site de produit, qui peuvent se trouver à l'intérieur d'un champ de balise.

De même, comme ci-dessus, nous pouvons utiliser d'autres objets soupStrainer pour analyser des informations spécifiques à partir d'une balise HTML. Voici quelques exemples -

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)