2013-06-07 4 views
2

Как бы я идти о получении следующего брата, используя BS4 после того как я выясню содержимое, что я хочу с помощью функции поиска HTML с помощью soup.findAllBeautifulSoup вернуться следующий родственный после использования FindAll (текст =»«)

<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 

Однако мой желаемый outupt является

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

ответ

5
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> 

Надежда это то, что вы хотели.

+0

безупречное спасибо! – DavidJB

Смежные вопросы