Beautiful Soup - Analisando apenas a seção de um documento

Existem várias situações em que você deseja extrair tipos específicos de informações (apenas <a> tags) usando Beautifulsoup4. A classe SoupStrainer em Beautifulsoup permite que você analise apenas uma parte específica de um documento recebido.

Uma maneira é criar um SoupStrainer e passá-lo para o construtor Beautifulsoup4 como o argumento parse_only.

SoupStrainer

Um SoupStrainer informa a BeautifulSoup quais partes são extraídas, e a árvore de análise consiste apenas nesses elementos. Se você restringir as informações necessárias a uma parte específica do HTML, isso irá acelerar o resultado da pesquisa.

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

As linhas de código acima analisam apenas os títulos de um site de produto, que pode estar dentro de um campo de tag.

Da mesma forma, como acima, podemos usar outros objetos soupStrainer para analisar informações específicas de uma tag HTML. Abaixo estão alguns dos exemplos -

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)