BeautifulSoup - 从findAll的元素中获取类

时间:2013-02-05 11:39:30

标签: python beautifulsoup

我使用BeautifulSoup解析网站。我知道我想要的内容是divcontent。而且内容全部都在p个标签中。所以我跑了

paragraphs= content.findAll('p')

直到这里很好。我遍历列表,并且有if条件,如果遇到特定的类,它将突破循环。

for para in paragraphs:
    if 'class' in para:
        if para['class']=='end':
            break

但这不起作用。当我运行循环时,遇到end类时它不会中断。事实上,在遍历循环时,所有元素的类似乎都会丢失。

for para in paragraphs:
    if 'class' in para:
        print para['class']

即使有类的元素,也不会打印出任何内容。实际上,这段代码确实打印出了类 -

>>>paragraphs[0]['class']
u'dateline'

但是,

>>> print 'class' in paragraphs[0]
False

我不清楚这里发生了什么。最终我通过使用异常来解决我的问题,但这有点困扰我。谁能解释一下这里发生了什么?

1 个答案:

答案 0 :(得分:1)

当您放置if 'class' in para时,您实际上是在说段中是否有实际字类。我相信你的意图是看它是否有课,所以你想要的是:

for para in paragraphs:
    if para.has_key('class'):
        if para['class'][0] == 'end': # Notice that I put [0], as para['class'] is a list.
            break