2017-05-03 8 views
3

は言うことができますか?すなわち:[「クラス1」、「クラス2」、「Class3に」、「CLASS4」]のPython、美しいスープ、すべてのクラス名を取得

私が試した:

soup.find_all(class_=True) 

しかし、それは全体のタグを取得し、私は、文字列の上にいくつかの正規表現を行う必要があります

答えて

2

属性を取得することについては、treat each Tag instance found as a dictionaryとすることができます。 class属性値がclass以来リストになることに注意することは、特別な"multi-valued" attributeです:

classes = [] 
for element in soup.find_all(class_=True): 
    classes.extend(element["class"]) 

または:

classes = [value 
      for element in soup.find_all(class_=True) 
      for value in element["class"]] 

デモ:

In [1]: from bs4 import BeautifulSoup 

In [2]: data = """ 
    ...: <div class="class1"> 
    ...:  <span class="class2">some text</span> 
    ...:  <span class="class3">some text</span> 
    ...:  <span class="class4">some text</span> 
    ...: </div>""" 

In [3]: soup = BeautifulSoup(data, "html.parser") 

In [4]: classes = [value 
    ...:   for element in soup.find_all(class_=True) 
    ...:   for value in element["class"]] 

In [5]: print(classes) 
['class1', 'class2', 'class3', 'class4'] 
関連する問題