2012-11-02 15 views
24

ja staram się analizować stronę internetową, która wygląda tak ze Python-> piękny Soup: enter image description herePiękna Soup znaleźć dzieci do określonego div

próbuję wyodrębnić zawartość podświetlonego td div. Obecnie mogę uzyskać wszystkie DIV przez

alltd = soup.findAll('td') 


for td in alltd: 
    print td 

Ale staram się zawęzić zakres że aby szukać TDS w klasie „tablebox”, który nadal będzie prawdopodobnie wrócimy 30+, ale jest bardziej do zaakceptowania niż liczba 300 +.

Jak mogę wyodrębnić zawartość podświetlonego td na powyższym rysunku?

Odpowiedz

42

Warto wiedzieć, że wszystkie elementy, które BeautifulSoup znajdzie w jednym elemencie, wciąż mają ten sam typ, co element macierzysty - to znaczy można wywoływać różne metody.

Więc to jest kod nieco roboczego dla przykładu:

soup = BeautifulSoup(html) 
divTag = soup.find_all("div", {"class": "tablebox"}): 

for tag in divTag: 
    tdTags = tag.find_all("td", {"class": "align-right"}) 
    for tag in tdTags: 
     print tag.text 

To będzie drukować cały tekst wszystkich znaczników td z klasą „align-prawo”, które mają div z klasą "tablebox".

+1

W pętli nadrzędnej tag jest elementem "div", a nie elementem zupy, więc myślę, że spowodowałby błąd, prawda? W elemencie "div" nie ma metody o nazwie "find_all" – LKM

Powiązane problemy