BeautifulSoup-ドキュメントのセクションのみを解析する

Beautifulsoup4を使用して特定のタイプの情報(<a>タグのみ)を抽出したい状況は複数あります。BeautifulsoupのSoupStrainerクラスを使用すると、受信ドキュメントの特定の部分のみを解析できます。

1つの方法は、SoupStrainerを作成し、それをparse_only引数としてBeautifulsoup4コンストラクターに渡すことです。

SoupStrainer

SoupStrainerはBeautifulSoupにどの部分が抽出するかを伝え、解析ツリーはこれらの要素のみで構成されます。必要な情報をHTMLの特定の部分に絞り込むと、検索結果が高速化されます。

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

上記のコード行は、タグフィールド内にある可能性のある製品サイトのタイトルのみを解析します。

同様に、上記のように、他のsoupStrainerオブジェクトを使用して、HTMLタグから特定の情報を解析できます。以下はいくつかの例です-

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)