如何按類別查找元素

我在使用Beautifulsoup解析具備「 class」屬性的HTML元素時遇到了麻煩。 代碼看起來像這樣 python

soup = BeautifulSoup(sdata)
mydivs = soup.findAll('div')
for div in mydivs: 
    if (div["class"] == "stylelistrow"):
        print div

腳本完成後的同一行出現錯誤。 spa

File "./beautifulcoding.py", line 130, in getlanguage
  if (div["class"] == "stylelistrow"):
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 599, in __getitem__
   return self._getAttrMap()[key]
KeyError: 'class'

我如何擺脫這個錯誤? code


#1樓

直接的方法是: 文檔

soup = BeautifulSoup(sdata)
for each_div in soup.findAll('div',{'class':'stylelist'}):
    print each_div

確保使用findAll的大小寫,而不是findall的大小寫 get


#2樓

這對我有用: it

for div in mydivs:
    try:
        clazz = div["class"]
    except KeyError:
        clazz = ""
    if (clazz == "stylelistrow"):
        print div

#3樓

從文檔中: io

從Beautiful Soup 4.1.2開始,您可使用關鍵字參數 class_ 經過CSS類進行搜索beautifulsoup

soup.find_all("a", class_="sister")

在這種狀況下將是: class

soup.find_all("div", class_="stylelistrow")

它也適用於: lambda

soup.find_all("div", class_="stylelistrowone stylelistrowtwo")

#4樓

這對我來講能夠訪問class屬性(在beautifulsoup 4上,與文檔中所說的相反)。 KeyError會返回一個列表,而不是字典。

for hit in soup.findAll(name='span'):
    print hit.contents[1]['class']

#5樓

特定於BeautifulSoup 3:

soup.findAll('div',
             {'class': lambda x: x 
                       and 'stylelistrow' in x.split()
             }
            )

將找到全部這些:

<div class="stylelistrow">
<div class="stylelistrow button">
<div class="button stylelistrow">
相關文章
相關標籤/搜索