我有这种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结构以进行进一步处理:
你建议用什么结构?你会怎么做?答案 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'])])]
请注意,对于包含未编号列表的列表项,将返回一个元组,其中第一个元素是列表项中的字符串,第二个元素是包含未编号列表内容的列表。
答案 1 :(得分:0)
您可以使用映射类型:词典