BeautifulSoup

0

Witam,

Korzystająm z biblioteki BeautifulSoup i natrafiam na takie teksty:

html <p class="result-live"><strong>2nd Quarter 9<span class="minutes-anim">'</span></strong> <span class="live-score"><b>33:39</b></span> (14:18, 19:21)</p>

html <p class="result"><span class="bold">Final result </span><strong>34:139</strong> (15:36, 8:38, 4:32, 7:33)</p>

Jak już je mam to sobie wyciągam co mnie interesuje:

 warunek2 =  text2.find('p',{'class':'bold'}).text
  warunek1 = text1.find('p',{'class':'result-live'}).find('strong').text

Wszystko wyciągam w pętlach i w 90% przypadków jest warunek1, i właśnie jak zmieni mi na warunek2 to petla sie zawiesza i wyskakuje bład (zmienia sie to wszystko dynamicznie):

AttributeError: 'NoneType' object has no attribute 'find' 

Czyli jak widze ten błąd to domyślam się, że warunek1 został podmieniony przez warunek2 i nie wiem się przed tym zabezpieczyć. Myślałem o instrukcji warunkowej if i wklejeniu continue, ale nie wiem jak zapisać w warunku coś w stylu:
"gdy nie natrafiłeś na jakiś znacznik(warunek 1) i widzisz w jego miejscu warunek 2 to continue, else rób co miałeś robić"

2

Nie do końca rozumiem co tam się dzieje w tym kodzie wcześniej. Nie mniej jednak problem jest na pewno w tej linijce

warunek1 = text1.find('p',{'class':'result-live'}).find('strong').text 

A dlaczego?
Ponieważ w przypadku, gdy nie znajdzie Ci tego 'p',{'class':'result-live'} to zwraca None i na tym None wywołujesz kolejnego finda ->

.find('strong').text 

Musisz najpierw sprawdzić czy znajduje ten tekst, a ewentualnie potem szukać "głębiej"

warunek1 = text1.find('p',{'class':'result-live'})
if warunek1 is not None:
    war11 = warunek1.find('strong').text 

1 użytkowników online, w tym zalogowanych: 0, gości: 1