BeautifulSoup 在 class 上查找无效

BeautifulSoup find on class doesn't work

将文本打印到控制台给了我

    <html>
     <body>
      <p>
       }"
      </p>
      <div class='\"message-container\"' id='\"m154862032\"' >
      ...

但是当我尝试提取消息容器时 div 我得到一个空列表

  messageContainers = BeautifulSoup(post).findAll('div',attrs={'class':'message-container'})

您的 HTML 格式错误,属性值中包含嵌入的反斜杠和引号。在搜索 class:

时,您必须包含这些引号
>>> from bs4 import BeautifulSoup
>>> sample = r'''
...     <html>
...      <body>
...       <p>
...        }"
...       </p>
...       <div class='\"message-container\"' id='\"m154862032\"' >
... '''
>>> soup = BeautifulSoup(sample)
>>> soup.find_all('div', class_=r'\"message-container\"')
[<div class='\"message-container\"' id='\"m154862032\"'>
</div>]

我在这里使用原始字符串文字 (r'...') 以避免反斜杠被解释为转义序列;这样我就不用加倍了。