2

soup.findAllを使用してHTMLを検索して必要なコンテンツを見つけた後、bs4を使用して次の兄弟を取得するにはどうすればよいですか

<td class="name">David<span class="flag away"</span>
</td>
    <td class="team">b<span class="team b"></span></td>
    <td class="time">99'</td>

<td class="name">James<span class="flag home"</span>
</td>
    <td class="team">a<span class="team a"></span></td>
    <td class="time">99'</td>

すべて検索を使用して、テキストを見つけることができます

for t in soup.findAll(text='David'):
>> David

しかし、私の望ましい出力は

<td class="team">b<span class="team b"></span></td>
<td class="time">99'</td>
4

1 に答える 1

7
from bs4 import BeautifulSoup as soup, Tag


input = """<td class="name">David<span class="flag away"</span>
</td>
    <td class="team">b<span class="team b"></span></td>
    <td class="time">99'</td>

<td class="name">James<span class="flag home"</span>"""

web_soup = soup(input)
for t in web_soup.findAll(text='David'):
    for item in t.parent.next_siblings:
        if isinstance(item, Tag):
            if 'class' in item.attrs and 'name' in item.attrs['class']:
                break
            print item

プリント:

<td class="team">b<span class="team b"></span></td>
<td class="time">99'</td>

それがあなたが望んでいたことを願っています。

于 2013-06-07T11:06:03.777 に答える