2010-11-12 29 views
2

我試過這個: s = soup.findAll("table", {"class": "view"})但它給我的表。但我需要桌子內的桌子。如何使用美麗的湯解析桌子裏面的桌子?

<table class="view" > 
    <tr> 
     <td width="46%" valign="top"> 
     <table> 
    <tr> 
     <td> 
      <div style="adasdasd"> 
       <div class="abc">dasdsadasdasdas</div> 
      </div> 
      <div> 
       <span><span class="aaaaaaa " title="aaaaaaaaaaa"><span>aaaaaaaaaaaaa</span></span> </span> 
       <b>My Face</b><br /> 
        Hello This is me, 
       </div> 
      <div class="abc""> 
        Dec 6, 2010 by Alis 
       </div> 
     </td> 
    </tr> 
     </table> 
    </tr> 
    </table> 

The things I want to scrap is: 

    Hello This is me, 

    My Face 

    Dec 6, 2010 by Alis 

回答

1
s = soup.findAll("table", {"class": "view"})[0].find("table") 

如果僅僅是一個表,你可以使用.find的第一個過了,放下[0]

+0

'ResultSet'對象沒有屬性'find'-屬性錯誤我正在獲取。 – user12345 2010-11-12 12:11:52

+0

如果你正在使用findAll,你也需要[0]。 findAll爲你提供了一個ResultSet(就像一個列表),所以你需要指定你想使用找到的第一個。如果它只在頁面上找到一個表,則可以使用find而不是findAll來獲取它。 – 2010-11-12 12:32:06

1

下面有一些更好的HTML格式:

<table class="view" > 
    <tr> 
     <td width="46%" valign="top"> 
      <table> 
       <tr> 
        <td> 
         <div style="adasdasd"> 
          <div class="abc">dasdsadasdasdas</div> 
         </div> 
         <div> 
          <span> 
           <span class="aaaaaaa " title="aaaaaaaaaaa"> 
            <span>aaaaaaaaaaaaa</span> 
           </span> 
          </span> 
          <b>My Face</b> 
          <br /> 
          Hello This is me, 
         </div> 
         <div class="abc"> 
          Dec 6, 2010 by Alis 
         </div> 
        </td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
</table> 

注:其實我加了標籤,因爲它缺少一個。

innerTable = soup.find("table", {"class": "view"}).tr.td.table ##Gets the table in the first cell of the first row 

innerDiv = innerTable.find("div", {"style": "adasdasd"}).nextSibling #this gets the div in which all of you content resides 

這樣就可以讓您知道所有內容。從那裏只需要一點點解析即可獲得實際需要的內容。