5

我正在使用 BeautifulSoup 解析网站。我知道我想要的内容在 a divof classcontent中。并且内容都在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

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

4

1 回答 1

4

当您输入 时if 'class' in para,您实际上是在说段落中是否存在实际的单词类。我相信你的意图是看看它是否有一个类,所以你想要的是:

for para in paragraphs:
    if para.has_attr('class'):
        if para['class'][0] == 'end': # Notice that I put [0], as para['class'] is a list.
            break
于 2013-02-12T07:37:51.267 回答