2012-02-12 72 views
1

我有這樣的HTML列表中:如何打開一個HTML嵌套列表轉換爲Python的一個

lista = """ 
<ul> 
<li>Arts &amp; Entertainment 
    <ul> 
     <li>Celebrities &amp; Entertainment News</li> 
     <li>Comics &amp; Animation 
     <ul> 
     <li>Anime &amp; Manga</li> 
     <li>Cartoons</li> 
     <li>Comics</li> 
     </ul> 
     </li> 
    </ul> 
</li> 
</ul> 

""" 

,我想將它轉化成有用的蟒蛇結構作進一步處理:

什麼你有什麼建議?還有你會怎麼做?

+0

您正在使用哪個HTML解析器? – 2012-02-12 13:34:05

+0

正如@jcollado建議我使用美麗的湯。 – lorussian 2012-02-12 17:35:54

回答

2

隨着BeautifulSoup,我會做這樣的事情:

from BeautifulSoup import BeautifulSoup 
from pprint import pprint 

def parseList(tag): 
    if tag.name == 'ul': 
     return [parseList(item) 
       for item in tag.findAll('li', recursive=False)] 
    elif tag.name == 'li': 
     if tag.ul is None: 
      return tag.text 
     else: 
      return (tag.contents[0].string.strip(), parseList(tag.ul)) 

soup = BeautifulSoup(lista) 
pprint(parseList(soup.ul)) 

輸出示例:

[(u'Arts &amp; Entertainment', 
    [u'Celebrities &amp; Entertainment News', 
    (u'Comics &amp; Animation', 
    [u'Anime &amp; Manga', u'Cartoons', u'Comics'])])] 

注意,對於列表包含未編號列表的項目,將返回一個元組,其中第一個元素是列表項中的字符串,而第二個元素是包含未編號列表內容的列表。

+0

我必須承認我有一些麻煩處理它。我想打印整個清單,保持層次結構。例如用不同的縮進打印它... – lorussian 2012-02-12 16:37:58

0

您可以使用映射類型:字典

相關問題