查找包含特定文本的 td 的下一个同级,并将其存储在变量中



我有这张桌子,我试图用Python/Beautiful Soup刮擦。

我也有这个代码:

desc_seven = page_soup.find.nextSibling('strong', text='Description 7')
print(desc_seven.text.strip())

我正在尝试做的是找到文本"描述 7",然后转到它旁边的文本并将其存储在变量中,以便我可以轻松print它。

如果我执行print(desc_seven.text.strip()),输出应该是"HHH"。

我的代码不起作用,说没有属性"下一个兄弟姐妹"。另外,是否可以在不使用任何(for(循环的情况下执行此操作,因为我将捕获多个td并将其单独存储在变量中。

<table>
<tr>
<td><strong>Description 1</strong></td>
<td>AAA</td>
<td><strong>Description 11</strong></td>
<td>LLL</td>
</tr>
<tr>
<td><strong>Description 2</strong></td>
<td>BBB</td>
<td><strong>Description 12</strong></td>
<td>MMM</td>
</tr>
<tr>
<td><strong>Description 3</strong></td>
<td>CCC</td>
<td><strong>Description 13</strong></td>
<td>NNN</td>
</tr>
<tr>
<td><strong>Description 4</strong></td>
<td>EEE</td>
<td><strong>Description 14</strong></td>
<td>OOO</td>
</tr>
<tr>
<td><strong>Description 5</strong></td>
<td>FFF</td>
<td><strong>Description 15</strong></td>
<td>PPP</td>
</tr>
<tr>
<td><strong>Description 6</strong></td>
<td>GGG</td>
<td><strong>Description 16</strong></td>
<td>QQQ</td>
</tr>
<tr>
<td><strong>Description 7</strong></td>
<td>HHH</td>
<td><strong>Description 17</strong></td>
<td>RRR</td>
</tr>
<tr>
<td><strong>Description 8</strong></td>
<td>III</td>
<td><strong>Description 18</strong></td>
<td>SSS</td>
</tr>
<tr>
<td><strong>Description 9</strong></td>
<td>JJJ</td>
<td><strong>Description 19</strong></td>
<td>TTT</td>
</tr>
<tr>
<td><strong>Description 10</strong></td>
<td>KKK</td>
<td><strong>Description 20</strong></td>
<td>UUU</td>
</tr>
</table>

感谢您对此的帮助。谢谢!

你能做的是在你找到"强"元素后使用find_next()

soup = BeautifulSoup(html, 'html.parser')
strong = soup.find('strong', text='Description 7')
desc_seven = strong.find_next('td')
print(desc_seven.text.strip())

输出:

您可以在一行中完成:

desc_seven =  soup.find('strong', text='Description 7').findNext('td').get_text(strip=True)
print(desc_seven)

输出:

最新更新