如何按类别查找元素

我在使用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">
相关文章
相关标签/搜索