2012-03-20 22 views
5

BeautifulSoup'u kullanarak html içindeki tüm tabloları bulmak istiyorum. İç masalar dış masalara dahil edilmelidir.BeautifulSoup kullanarak html içindeki tüm tabloları bul.

Çalışan bir kod oluşturdum ve beklenen çıktıyı veriyor. Ama bu çözümü sevmiyorum çünkü 'çorba' nesnesini yok ediyor.

Daha zarif bir şekilde nasıl yapıldığını biliyor musunuz? yerine find() ve decompose() ait

from BeautifulSoup import BeautifulSoup as bs 

input = '''<html><head><title>title</title></head> 
<body> 
<p>paragraph</p> 
<div><div> 
    <table>table1<table>inner11<table>inner12</table></table></table> 
    <div><table>table2<table>inner2</table></table></div> 
</div></div> 
<table>table3<table>inner3</table></table> 
<table>table4<table>inner4</table></table> 
</html>''' 

soup = bs(input) 
while(True): 
    t=soup.find("table") 
    if t is None: 
     break 
    print str(t) 
    t.decompose() 

Output:  
<table>table1<table>inner11<table>inner12</table></table></table> 
<table>table2<table>inner2</table></table> 
<table>table3<table>inner3</table></table> 
<table>table4<table>inner4</table></table> 

cevap

13

kullanım soup.findAll("table"):

tables = soup.findAll("table") 

for table in tables: 
    if table.findParent("table") is None: 
     print str(table) 

çıkışı:

<table>table1<table>inner11<table>inner12</table></table></table> 
<table>table2<table>inner2</table></table> 
<table>table3<table>inner3</table></table> 
<table>table4<table>inner4</table></table> 

ve hiçbir şey/tahrip tahrip olduğu görülmektedir.