【发布时间】:2019-09-02 07:43:41
【问题描述】:
使用 python beautifulsoup 我正在尝试查找 HTML 页面的所有 <tr> 标记。但是,我想过滤掉在 <td> 标签之一内具有特定类的任何 <tr> 标签。
我已尝试使用以下代码过滤掉<td> 标记中具有“警告”类的行。
soup = BeautifulSoup(data, 'html.parser')
print(soup.find_all('tr', class_=lambda c: 'Warning' not in c))
我知道它没有过滤掉“警告类”,因为我在 find_all 函数中使用了 <tr>,但如果我尝试使用 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))
【问题讨论】:
标签: python python-3.x beautifulsoup