2010-11-12 69 views
2

J'ai essayé ceci: s = soup.findAll("table", {"class": "view"}) Mais c'est en train de me donner la table. Mais j'ai besoin de la table à l'intérieur de la table.comment analyser la table à l'intérieur de la table en utilisant une belle soupe?

<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 

Répondre

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

S'il y a juste une table, vous pouvez utiliser .find pour le premier aussi, et laisser tomber le [0].

+0

L'objet 'ResultSet' n'a pas d'attribut 'find'- Erreur d'attribut que j'obtiens. – user12345

+0

Si vous utilisez findAll, vous avez également besoin de [0]. findAll vous donne un ResultSet (comme une liste), vous devez donc spécifier que vous voulez utiliser le premier. S'il trouve juste une table sur la page, vous pouvez utiliser find à la place de findAll pour l'obtenir. –

1

Heres certains html mieux formaté:

<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> 

Note: En fait, j'ajouté une étiquette parce qu'il lui manquait un.

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 

Donc, cela vous mènera à ce qui contient tout votre contenu. De là, c'est juste un peu d'analyse pour obtenir le contenu dont vous avez réellement besoin.