如何将Html嵌套列表转换为Python的列表

时间:2012-02-12 13:30:38

标签: python html html-lists

我有这种Html列表:

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>

"""

我希望将其转换为有用的python结构以进行进一步处理:

你建议用什么结构?你会怎么做?

2 个答案:

答案 0 :(得分: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'])])]

请注意,对于包含未编号列表的列表项,将返回一个元组,其中第一个元素是列表项中的字符串,第二个元素是包含未编号列表内容的列表。

答案 1 :(得分:0)

您可以使用映射类型:词典