2016-05-12 10 views
1

gibt es eine gute Möglichkeit (z. B. mit BeautifulSoup), um eine HTML-Tabelle zu vereinfachen. Ich verwende Anfragen auf den Tisch zu bekommen und die Tabelle mit BeautifulSoup zu extrahieren, aber ich brauche die Tabelle aus zu gehen:Python vereinfachen HTML-Tabelle

<table> 
    <thead></thead> 
    <tbody> 
     <tr> 
      <td><a id="bar">Some text<br></br><span class="foobar">foo </span><small class="foo">bar!</small></a></td> 
     </tr> 
    </tbody> 
</table> 

zu:

<table> 
    <thead></thead> 
    <tbody> 
     <tr> 
      <td>Some text\nfoo bar!</td> 
     </tr> 
    </tbody> 
</table> 

Durch eine einfache Art und Weise, dann denke ich nicht zu jedem Tag gehen und supp.get_text() verwenden.

+0

Warum sollte '

' Ausbeute nur ein '\ n '? – Xufox

+0

Es sollte

sein, sorry. Ich weiß, dass es
sein könnte. Aber das sind die Daten, mit denen ich arbeite. –

Antwort

1

Sie können die br mit Zeilenumbrüche ersetzen:

h = """<table> 
    <thead></thead> 
     <tr> 
      <td><a id="bar">Some text<br><br/><span class="foobar">foo </span><small class="foo">bar!</small></a></td> 
     </tr> 
</table>""" 


from bs4 import BeautifulSoup 

soup = BeautifulSoup(h) 

td = soup.select_one("#bar") 
td.br.replace_with("\n") 

td.replace_with(td.text) 


print(repr(soup)) 

Welche gibt Ihnen:

<html><body><table>\n<thead></thead>\n<tr>\n<td>Some text\nfoo bar!</td>\n</tr>\n</table></body></html> 
+0

@RadLexus, ich bin mir nicht sicher, folgen, der Punkt ist es, die Tabelle zu ändern? –

+1

Sorry - OP Ziel war nur einen Text nicht durch Tags zu brechen. Ich dachte, das verbleibende HTML würde immer noch als solches verwendet werden, aber es scheint, dass es egal ist. – usr2564301

+0

@ RadLexus, keine Sorge, ich dachte, vielleicht habe ich etwas verpasst. –