2016-06-03 3 views
0

Für diesen HTML-Code eingebettet ist:Capture-Informationen in einer Liste mit BS4, wenn eine Tabelle in der Liste

<ul><li>Include these codes as defined in http://unitsofmeasure.org 
    <table><tr><td><b>Code</b> 
    </td><td><b>Display</b></td></tr> 
    <tr><td>min</td><td>Minute</td><td></td></tr> 
    <tr><td>h</td><td>Hour</td><td></td></tr><tr> 
    <td>d</td><td>Day</td><td></td></tr> 
    </table></li></ul> 

Ich möchte nur die Informationen in <li> Abschnitt, meine ich "Include these codes as defined in http://unitsofmeasure.org". Aber weil nach Tabelle beendet wird, erfasst BS4 auch Informationen in der Tabelle. Dies ist mein Code:

definition = [li.get_text() for li in ul.findAll("li")] 

Und dies ist die Ausgabe:

[u'Include these codes as defined in http://unitsofmeasure.orgCodeDisplayminMinutehHourdDaywkWeekmoMonthaYear'] 

Wie kann ich den Code bearbeiten, um keine Informationen in der Tabelle zu erfassen?

Antwort

1

Sie können extract() verwenden, um die Tabelle zu entfernen.

definition = [li.find('table').extract().get_text() for li in ul.findAll("li")] 
Verwandte Themen