2013-09-25 12 views
5

Próbuję parsować kilka bloków div używając Beautiful Soup za pomocą jakiegoś html ze strony internetowej. Jednak nie mogę się dowiedzieć, która funkcja powinna zostać użyta do wybrania tych bloków div. Próbowałem następujące:Używanie BeautifulSoup do wyboru bloków div w HTML

import urllib2 
from bs4 import BeautifulSoup 

def getData(): 

    html = urllib2.urlopen("http://www.racingpost.com/horses2/results/home.sd?r_date=2013-09-22", timeout=10).read().decode('UTF-8') 

    soup = BeautifulSoup(html) 

    print(soup.title) 
    print(soup.find_all('<div class="crBlock ">')) 

getData() 

Chcę móc wybrać wszystko pomiędzy <div class="crBlock "> i jego prawidłowe końcowego </div>. (Oczywiście istnieją inne div tagi, ale chcę, aby wybrać blok całą drogę w dół do tego, który oznacza koniec tej części html.)

Odpowiedz

8

Prawidłowe stosowanie byłoby:

soup.find_all('div', class_="crBlock ") 

By domyślnie, piękna zupa zwróci cały tag, łącznie z zawartością. Możesz wtedy zrobić, co chcesz, jeśli przechowujesz go w zmiennej. Jeśli szukasz tylko jednego div, możesz również użyć find(). Na przykład:

div = soup.find('div', class_="crBlock ") 
print(div.find_all(text='foobar')) 

Sprawdź documentation page Aby uzyskać więcej informacji na temat wszystkich filtrów można użyć.

Powiązane problemy