如何通过 css 选择器匹配特定标签,其中 class 属性包含空格?

How to match a particular tag through css selectors where the class attribute contains spaces?

我想要 select 一个 table 标签,其 class 属性的值为:

drug-table data-table table table-condensed table-bordered

所以我尝试了下面的代码:

for i in soup.select('table[class="drug-table data-table table table-condensed table-bordered"]'):
    print(i)

但是没有成功:

ValueError: Unsupported or invalid CSS selector: "table[class="drug-table"

class 属性值中的空格是无法匹配的原因。而且,我想再深入了解两个元素,例如:

soup.select('table[class="drug-table data-table table table-condensed table-bordered"] > tr > th')

要指定 multiple classes in a CSS selector,请用点将它们连接起来:

soup.select("table.drug-table.data-table.table.table-condensed.table-bordered")

演示:

>>> from bs4 import BeautifulSoup
>>> 
>>> data = """
... <table class="drug-table data-table table table-condensed table-bordered">
...     <tr>
...         <td>test</td>
...     </tr>
... </table>
... """
>>> 
>>> soup = BeautifulSoup(data)
>>> for i in soup.select("table.drug-table.data-table.table.table-condensed.table-bordered > tr > td"):
...     print(i)
... 
<td>test</td>