如何通过 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>
我想要 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>