python - 查找包含特定文本的 td 的下一个兄弟并将其存储在变量中
问题描述
我有这张桌子,我试图用 Python/Beautiful Soup 来刮。
我也有这个代码:
desc_seven = page_soup.find.nextSibling('strong', text='Description 7')
print(desc_seven.text.strip())
我要做的是找到文本“描述 7”,然后转到它旁边的文本并将其存储在一个变量中,这样我就可以轻松地找到print
它。
如果我这样做,输出应该是“HHH”print(desc_seven.text.strip())
。
我的代码不起作用,说没有属性“nextSibling”。此外,是否可以在不使用任何 (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())
输出:
HHH
您可以在一行中完成:
desc_seven = soup.find('strong', text='Description 7').findNext('td').get_text(strip=True)
print(desc_seven)
输出:
HHH
推荐阅读
- python - 获取错误即时消息 Django“异常值:名称'order_id'未定义”查询以列出子记录
- sql - 无法将字符串转换为时间戳
- node.js - 文件上传失败
- javascript - 为什么 React Bootstrap Card 没有在浏览器中显示?尽管使用了组件,但页面为空
- css - gtk_style_context_get_property 的 GTK4 等价物是什么?
- python - 从现有 CSV 文件向 CSV 文件添加列
- firebase - 在 firebase ( Flutter ) 中执行 once().then 函数后变量不会改变
- azure-active-directory - 使用 Azure-MFA 发送 OTP 时如何在 Azure AD B2C 自定义策略中设置 OTP 重试限制
- node.js - TypeError: login.findOne(...).toArray 不是函数
- perl - 来自我的 Perl 脚本的系统调用会截断地址