如何将HTML嵌套列表转换为Python列表
我有这样一个Html列表:
lista = """
<ul>
<li>Arts & Entertainment
<ul>
<li>Celebrities & Entertainment News</li>
<li>Comics & Animation
<ul>
<li>Anime & 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 & Entertainment',
[u'Celebrities & Entertainment News',
(u'Comics & Animation',
[u'Anime & Manga', u'Cartoons', u'Comics'])])]
注意,对于包含无序列表的列表项,会返回一个元组。这个元组的第一个元素是列表项中的字符串,第二个元素是一个包含无序列表内容的列表。