Piękna zupa - parsowanie tylko sekcji dokumentu

Istnieje wiele sytuacji, w których chcesz wyodrębnić określone typy informacji (tylko znaczniki <a>) za pomocą Beautifulsoup4. Klasa SoupStrainer w Beautifulsoup umożliwia analizowanie tylko określonej części przychodzącego dokumentu.

Jednym ze sposobów jest utworzenie SoupStrainer i przekazanie go konstruktorowi Beautifulsoup4 jako argumentu parse_only.

SoupStrainer

SoupStrainer mówi BeautifulSoup, które części wyodrębniają, a drzewo analizy składa się tylko z tych elementów. Jeśli zawęzisz wymagane informacje do określonej części kodu HTML, przyspieszy to wyniki wyszukiwania.

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

Powyższe wiersze kodu przeanalizują tylko tytuły ze strony produktu, które mogą znajdować się w polu tagu.

Podobnie, jak powyżej, możemy użyć innych obiektów soupStrainer, aby przeanalizować określone informacje ze znacznika HTML. Poniżej znajduje się kilka przykładów -

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)