2013-05-27 18 views
5

chciałem szukać w tagu:Wyszukiwanie w tagach z BeautifulSoup Pythonie

<div id="cmeProductSlatePaginiationTop" class="cmePaginiation"> 
    <ul> 
     <li class="disabled"> 
     <li class="active"> 
     <li class="away-1"> 
     <li> 
    </ul> 
</div> 

Zasadniczo, chcę policzyć occurunces o <li ..> w tym div. Jednak, gdy użyłem BeautifulSoup, nie mogę dostać tagi w między div

soup = BeautifulSoup(resp) 
    tags = soup.find('div', attrs = {'class' : 'cmePaginiation'}) 
    print tags 

>>> <div id="cmeProductSlatePaginiationTop" class="cmePaginiation">&nbsp;</div>

Czy istnieje sposób policzyć liczbę wystąpień li (w tym przykładzie 4)?

Odpowiedz

12

Zastosowanie find_all:

div = soup.find('div', id='cmeProductSlatePaginiationTop') 
lis = div.find_all('li') 
num_lis = len(lis) 
+0

zawartość w 'div' nadal jest to:' '

 
Więc nie mogę znaleźć żadnego' li' –

+0

@JamesHallen: Czy to rzeczywisty HTML, czy to jest to, co widzisz w inspektorze DOM? – Blender

+0

To jest rzeczywisty HTML –

2

około 12 miesięcy za późno. Ale tak czy inaczej, tutaj jest rozwiązanie:

soup.find_all zwraca listę znaczników, nawet w przypadku, gdy istnieje tylko jeden tag.

Zmień kod do następujących:

div = soup.find('div', id='cmeProductSlatePaginiationTop') 
lis = div[0].find_all('li') 
num_lis = len(lis)` 
Powiązane problemy