2012-03-20 14 views
5

का उपयोग कर एचटीएमएल में सभी टेबल खोजें I सुंदरमप का उपयोग कर एचटीएमएल में सभी टेबल ढूंढना चाहता हूं। आंतरिक टेबल बाहरी टेबल में शामिल किया जाना चाहिए।सुंदर सूप

मैंने कुछ कोड बनाया है जो काम करता है और यह अपेक्षित आउटपुट देता है। लेकिन, मुझे यह समाधान पसंद नहीं है, क्योंकि यह 'सूप' वस्तु को नष्ट कर देता है।

क्या आप जानते हैं कि इसे और अधिक सुरुचिपूर्ण तरीके से कैसे किया जाए?

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> 

उत्तर

13

find() और decompose() के बजाय उपयोग soup.findAll("table"):

tables = soup.findAll("table") 

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

उत्पादन:

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

और कुछ भी नहीं नष्ट कर दिया/विलुप्त हो जाता है।

संबंधित मुद्दे