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)