使用python beautifulsoup我试图找到HTML页面的所有<tr>
标签。但是我想过滤掉任何一个<tr>
标签中有某个类的<td>
标签。
我尝试使用以下代码过滤<td>
标记中具有“Warning”类的行。
soup = BeautifulSoup(data, 'html.parser')
print(soup.find_all('tr', class_=lambda c: 'Warning' not in c))
我知道它不是过滤掉“警告类”,因为我在<tr>
函数中使用find_all
但是如果我尝试使用td
它给了我一个TypeError: argument of type 'NoneType' is not iterable
。
任何想法都表示赞赏。
from bs4 import BeautifulSoup
data = '''
<tr role="row" class="odd red" data-id="32">
<td role="gridcell" class="Warning">33</td>
<td role="gridcell">Ralph</td>
<td role="gridcell">List 2</td>
<td role="gridcell">FE</td>
<td role="gridcell">07/12/1996</td>
</tr>
<tr role="row" class="even red" data-id="33">
<td role="gridcell">34</td>
<td role="gridcell">Mary</td>
<td role="gridcell">List 2</td>
<td role="gridcell">SOTLTM</td>
<td role="gridcell">08/12/1996</td>
</tr>
<tr role="row" class="odd red" data-id="34">
<td role="gridcell">35</td>
<td role="gridcell">Tom</td>
<td role="gridcell">List 2</td>
<td role="gridcell">SOTLTM</td>
<td role="gridcell">09/12/1996</td>
</tr>
'''
soup = BeautifulSoup(data, 'html.parser')
print(soup.find_all('td', class_=lambda c: 'Warning' not in c))