2015-12-13 51 views
1

我目前能夠使用findAll函數查找某些元素。有沒有辦法導航到他們的孩子?在BeautifulSoup中導航DOM

我的代碼是:

data = soup.findAll(id="profile-experience") 
print data[0].get_text() 

,並返回一個文本塊(例如,一些文本沒有隔開正確)

的DOM看起來是這樣的

<div id="profile-experience> 
    <div class="module-body> 
    <li class="position"> 
    <li class="position"> 
    <li class="position"> 

如果我只是做一個class="positionfindAll得到了太多的垃圾回來。是否有使用BeautifulSoup只是找到我想要做這樣的事情是<li class="position">,它們嵌套下方<div id="profile-experience">

元素的方式:

data = soup.findAll('li',attrs={'class':'position'}) 

(這裏我只得到了嵌套數據)

d in data: 
    print d.get_text() 
+0

也許谷歌搜索或者看文檔可以幫助你...只是一個建議。 –

+0

是的,我一直在這樣做。但我似乎無法讓它工作:-( –

回答

2

當然,你可以在 「鏈」 的find*電話:

profile_experience = soup.find(id="profile-experience") 

for li in profile_experience.find_all("li", class_="position"): 
    print(li.get_text()) 

或者,你可以一次過與CSS selector解決它:

for li in soup.select("#profile-experience li.position"): 
    print(li.get_text()) 
+0

我在data.find_all(「li」,class =「position」)上遇到了一個錯誤'' –

+0

@MorganAllen注意到'_' 'class'。這很重要 – alecxe

+0

啊,你是對的:-)你能解釋一下嗎?這工作 –