BeautifulSoup - 从 findAll 的元素获取类

els*_*sar 8 python beautifulsoup

我正在使用 BeautifulSoup 解析一个网站。我知道我想要的内容在adiv类中content。并且内容全部在p标签中。所以我跑了

paragraphs= content.findAll('p')
Run Code Online (Sandbox Code Playgroud)

到这里为止都还好。我迭代该列表,并有一个if条件,如果遇到特定的类,该条件将跳出循环。

for para in paragraphs:
    if 'class' in para:
        if para['class']=='end':
            break
Run Code Online (Sandbox Code Playgroud)

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

for para in paragraphs:
    if 'class' in para:
        print para['class']
Run Code Online (Sandbox Code Playgroud)

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

>>>paragraphs[0]['class']
u'dateline'
Run Code Online (Sandbox Code Playgroud)

但,

>>> print 'class' in paragraphs[0]
False
Run Code Online (Sandbox Code Playgroud)

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

Ter*_*ryA 9

当你输入 时,你实际上是在说段落中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
Run Code Online (Sandbox Code Playgroud)