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

时间:2018-09-15 10:13:22

标签: python beautifulsoup

我有这张桌子,我正在尝试使用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>

感谢您的帮助。谢谢!

1 个答案:

答案 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