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

Avi*_*Raj 4 html python beautifulsoup css-selectors html-parsing

我想选择一个table具有class属性值的标签:

drug-table data-table table table-condensed table-bordered
Run Code Online (Sandbox Code Playgroud)

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

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

但它没有奏效:

ValueError:不支持或无效的CSS选择器:"table [class ="drug-table"

class属性值中的空格是不匹配的原因.而且,我想要经历两个更深层次的元素:

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

ale*_*cxe 6

在CSS选择器中指定多个类,请使用点连接它们:

soup.select("table.drug-table.data-table.table.table-condensed.table-bordered")
Run Code Online (Sandbox Code Playgroud)

演示:

>>> 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>
Run Code Online (Sandbox Code Playgroud)