BeautifulSoup|Tag|select|Find Label


BeautifulSoupは、HTML検索ラベルを強力に復号する機能を提供します.
参照元:Beautiful Soup 4.4.0ドキュメント
文書ディレクトリ
  • 1、find_allとfind
  • 2、その他の検索方法
  • 3、CSSセレクタ
  • 3.1詳細
  • 3.2子孫ノードの検索
  • 4、Tagオブジェクト
  • 1、find_allとfind
    一番よく使われるのはfind_all関数、詳細は次のとおりです:find_all(self,name=None,attrs={},recursive=True,text=None,limit=None,kwargs)解釈:self:クラスメソッドのフラグ;name:検索するtagの名前で、デフォルトはNoneです.attrs:ラベルプロパティ、辞書、デフォルトは空recursive:検索が要素ノードのサブツリーの下で全範囲行われるかどうかを指定し、デフォルトはTrueです.Falseは、現在のノードの直接サブノードのみを検索することを示します.text:textパラメータでドキュメント内の文字列の内容を検索できます.nameパラメータのオプション値と同様にtextパラメータは文字列、正規表現、リスト、Trueを受け入れる.Limit:戻り結果の数を制限し、制限に達したら検索を停止します.**kwargs名前を指定するパラメータは、内蔵のパラメータ名を検索するのではなく、検索時に指定した名前tagの属性として検索されます.
    *kwargsとattrsの違いを説明します.肝心なのは、属性が検索するラベルの特有の属性であるかどうかです.もしそうであれば、attrsを使って、そうでなければkwargsを使います.
    検索されたすべての指定された要素のリストを返します.各要素はbs4.element.Tagオブジェクトです.結果がなければ空のリストに戻ります.————————————————————————————————————————
    もう一つの小さな知識があります.
    なぜならfind_allはSPで最もよく使われる方法であるため、SPライブラリは簡略化方法を定義した.BeautifulSoupオブジェクトとtagオブジェクトをメソッドとして使用できます.このメソッドの実行結果と、このオブジェクトを呼び出すfind_all()メソッドは同じで、次の2行のコードは等価です.
    soup.find_all("a")
    soup("a")
    

    find関数とfind_allは完全に一致するパラメータであり、find関数は検索条件を満たす最初のノードのみを返し、以下に等価である.
    soup.find_all('head',limit=1)
    soup('head',limit=1)
    soup.find('head')
    

    find結果が見つからない場合はNoneに戻ります.
    find_all()とfind()は、現在のノードのすべてのサブノード、孫ノードのみを検索する.
    2、その他の検索方法
    SPのすべての検索方法はfind_と全く同じですallのパラメータ.
    find_parents():現在のノードの親世代ノードを検索し、条件を満たすすべての結果からなるリストを返します.find_parent():現在のノードの親世代ノードを検索し、最初の条件を満たす結果find_を返します.next_Siblings():条件に合致するすべての兄弟ノードを返し、リストfind_を構成します.next_Sibling():条件に合致する後の最初のtagノードのみを返す.find_previous_Siblings():条件を満たすすべての前の兄弟ノードを返し、リストfind_を構成します.previous_Sibling():最初の条件に合致する前の兄弟ノードを返す—————————————————————————————————————————————find_all_next():条件を満たすすべてのノードを返し、リスト結果find_next():条件を満たす最初のノードを返します.
    特筆すべきは、この方法とfind_allの違いはfind_allは現在のノードの下にあるノードのみを遍歴し、find_next_allはドキュメント全体を巡ります.
    ———————————————————————————————————————————— find_all_previous():条件を満たすすべてのノード、リストを返します.find_previous():条件を満たす最初のノードを返します.
    一例として、1つのtagオブジェクトaについて、a.find_all_previous('b')は、ラベルの前に現れるすべてのラベルを検索することを表す.
    3、CSSセレクタ
    3.1詳細
    tag.select(css)tagはbs4.element.Tagオブジェクト、すなわちHTMLのelementノード要素であり、selectはその検索方法であり、cssはcss構文に似た文字列であり、一般的な構造は以下の通りである:[tagName][attName[=value]]tagNameは要素名で、指定されていない場合はすべての要素です.attName=valueは属性名であり、valueはそれに対応する値であり、属性を指定しなくてもよいし、属性を指定した後に値を指定しなくてもよい.tag.select(css)は、1つの要素だけでも1つのリストであるbs4.element.Tagのリストを返します.
    たとえば、次のようになります.
    tags=soup.select("p a")
    tags=soup.select("a")
    tags=soup.select("p[class] a")
    soup.select("a[href='http://example.com/elsie']")
    

    ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
    セレクタ
    説明
    [attName]
    指定した属性を持つ要素を選択
    [attName=value]
    指定した属性と属性値を持つ要素を選択
    [attName^=value]
    属性値を一致させ、値の先頭にある要素を指定します.
    [attName$=value]
    属性値を一致させ、値の末尾にある要素を指定します.
    [attName*=value]
    属性値に指定した値を含む要素の一致
    たとえば、次のようになります.
    soup.select("a[href='http://example.com']")    href="http://example.com" <a>  ;
    soup.select("a[href$='sie']")    href  "sie"   <a>  ;
    soup.select("a[href^='http://example.com']")    href "http://example.com"   <a>  ;
    soupselect("a[href*='example']")    href      "example"    <a>

    3.2子孫ノードの検索
    select(css)のcssに複数のノードがある場合、ノード要素間をスペースで区切ることは、soupなどの子孫ノードを検索することである.select(「div p」)は、[attName=value] ノードすべてを検索する.
    ノード要素間を「>」で区切る(注意>の前後に少なくとも1つのスペースが含まれている)ことは、直接サブノード、例えばsoupを検索することである.select(「div>p」)は、孫ノードを含まない のすべてを します.
    「~」で する2つのノードは、 のノードの ろにあるすべての レベルの ノード( ~ の に なくとも1つのスペースがある)を することを す、 えばsoup.select(「div~p」)は、 ノードを します.
    「+」で する2つのノードは、 のノードの ろにある の レベルの ノード( + の に なくとも1つのスペースがある)を することを す: えばsoup.select(「div+p」)は、 ノードを します.
    4、Tagオブジェクト
    Tag、すなわちラベルには、 のような な がたくさんあります.
    name
    tag.name
    ラベル ;
    attributes
    tag[‘id’]
    ; です. して べることができます
    text
    tag.text
    ラベルの にあるすべてのテキストの を