(python, beautifulsoup) 当一个'td'包含某个字符串时,取整个tr

(python, beautifulsoup) When a 'td' contains certain string, take the whole tr

我有一个 html 代码,其中有多个 'tr' 同时每个 'tr'里面有多个'td'。我有兴趣只获取包含带有 x 字符串的 'tr' 的整个 'tr' 并且我希望代码过滤取出所有 'tr' 里面不包含 'td' 的 x 字符串。 那可能吗?。我是新手,我花了几个小时寻找解决方案,但我找不到。

例如,我想获得包含 'td' 的整个 'tr'字符串“酸团

                                    <tr>
                                    <td>2</td>
                                    <td><b><a href="http://tibia.fandom.com/wiki/abyssal calamaries">abyssal calamaries</a></b></td>
                                    <td><img loading="lazy" src="images/monsters/abyssal_calamaries.gif" alt="abyssal calamaries"></td>
                                    <td>2020-05-28</td>
                                    <td>0</td>
                                    <td>0</td>
                                    <td>47246</td>
                                    <td>0</td>
                                    
                                 </tr><tr>
                                    <td>3</td>
                                    <td><b><a href="http://tibia.fandom.com/wiki/acid blobs">acid blobs</a></b></td>
                                    <td><img loading="lazy" src="images/monsters/acid_blobs.gif" alt="acid blobs"></td>
                                    <td>2020-05-28</td>
                                    <td>325</td>
                                    <td>0</td>
                                    <td>93153</td>
                                    <td>1</td>
                                    
                                 </tr><tr>
                                    <td>4</td>
                                    <td><b><a href="http://tibia.fandom.com/wiki/acolytes of darkness">acolytes of darkness</a></b></td>
                                    <td><img loading="lazy" src="images/monsters/acolytes_of_darkness.gif" alt="acolytes of darkness"></td>
                                    <td>2020-11-11</td>
                                    <td>0</td>
                                    <td>0</td>
                                    <td>4569</td>
                                    <td>0</td>

您可以找到 td 标签并使用 .find_parent('tr') 将备份移动到 tr 标签。

.parent 也适用于此)

>>> len([td.find_parent('tr') for td in soup.find_all('td', string='acid blobs')])
1
>>> len(soup.find_all('tr'))
3

https://beautiful-soup-4.readthedocs.io/en/latest/#going-up