我有这张桌子,我正在尝试使用Python / Beautiful Soup抓取。
我也有这段代码:
desc_seven = page_soup.find.nextSibling('strong', text='Description 7')
print(desc_seven.text.strip())
我要做的是查找文本,然后转到其旁边的文本并将其存储在变量中,这样我就可以轻松print
了。 / p>
如果我执行print(desc_seven.text.strip())
,输出应为“ HHH” 。
我的代码无法正常工作,因为没有属性'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>
感谢您的帮助。谢谢!
答案 0 :(得分:1)
您可以做的是找到“强”元素后使用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