Schöne Suppe - Nur Abschnitt eines Dokuments analysieren
Es gibt mehrere Situationen, in denen Sie bestimmte Arten von Informationen (nur <a> -Tags) mit Beautifulsoup4 extrahieren möchten. Mit der SoupStrainer-Klasse in Beautifulsoup können Sie nur einen bestimmten Teil eines eingehenden Dokuments analysieren.
Eine Möglichkeit besteht darin, einen SoupStrainer zu erstellen und ihn als parse_only-Argument an den Beautifulsoup4-Konstruktor weiterzugeben.
SoupStrainer
Ein SoupStrainer teilt BeautifulSoup mit, welche Teile extrahiert werden, und der Analysebaum besteht nur aus diesen Elementen. Wenn Sie Ihre erforderlichen Informationen auf einen bestimmten Teil des HTML-Codes eingrenzen, beschleunigt dies Ihr Suchergebnis.
product = SoupStrainer('div',{'id': 'products_list'})
soup = BeautifulSoup(html,parse_only=product)
In den obigen Codezeilen werden nur die Titel einer Produktwebsite analysiert, die sich möglicherweise in einem Tag-Feld befinden.
In ähnlicher Weise können wir wie oben andereoupStrainer-Objekte verwenden, um bestimmte Informationen aus einem HTML-Tag zu analysieren. Nachfolgend einige Beispiele -
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)