2014-12-08 104 views
1

我需要在一個DOM結構,看起來像這樣深入嵌套<span>元素的值:如何使用BeautifulSoup獲取深度嵌套的div值?

<div class="panda"> 
    <div class="that"> 
     <ul class="foo"> 
      <li class="bar"> 
       <div class="hi"> 
        <p class="bye"> 
         <span class="cheese">Cheddar</span> 

的問題

soup.findAll("span", {"class": "cheese"})

的是,有數百個span元素上帶有「奶酪」類的頁面,所以我需要通過「熊貓」類來過濾它們。我需要得到的值的列表像["Cheddar", "Parmesan", "Swiss"]

回答

2

使用CSS選擇器:

[e.get_text() for e in soup.select('.panda .cheese')] 

或者,如果你喜歡find_all

# Calling a soup or tag is the same as find_all 

[e.get_text() for panda in soup('div', {'class': 'panda'}) 
       for e in panda('span', {'class': 'cheese'})] 
+0

幾乎沒有。這將返回完整標籤和內部html,如' Parmesan'。我只需要「Parmesan」的價值,我會接受你的答案。 – 2014-12-08 09:56:34

+0

@edmund_spenser完成。 – parchment 2014-12-08 10:55:44

+0

我不得不安裝BeautifulSoup4,因爲我最初得到了一個typeerror。謝謝,現在它工作。 – 2014-12-08 12:22:07