如何将HTML嵌套列表转换为Python列表

1 投票
2 回答
629 浏览
提问于 2025-04-17 12:53

我有这样一个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'])])]

注意,对于包含无序列表的列表项,会返回一个元组。这个元组的第一个元素是列表项中的字符串,第二个元素是一个包含无序列表内容的列表。

撰写回答