当元素有多个类时,BeautifulSoup SoupStrainer不起作用?

时间:2012-11-16 09:09:22

标签: python beautifulsoup

我试试

necessaryStuffOnly = SoupStrainer("table",{"class": "views-table"})
soup = BeautifulSoup(vegetables,parse_only=necessaryStuffOnly)

在这样的桌子上没有运气:

<div class="view-content">
  <table class="views-table sticky-enabled cols-20">
    <thead>
      <tr>
        <td>blablaba</td>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>more blablabla</td>
      </tr>
    </tbody>
  </table>
</div>

这适用于div

SoupStrainer("div",{"class": "view-content"})

这样的SoupStrainer不能过滤多个类的元素吗?

1 个答案:

答案 0 :(得分:1)

使用的比较是文字等式检查,因此以下工作:

soup('table', {'class': "views-table sticky-enabled cols-20"})

您可以通过将函数传递给过滤器来使其匹配:

soup('table', {'class': lambda L: 'views-table' in L.split()})

可能值得检查你正在使用的版本,因为我觉得不应该再这样了......更新:是的,你去https://bugs.launchpad.net/beautifulsoup/+bug/410304