Как превратить вложенный список HTML в список Python - PullRequest
1 голос
/ 12 февраля 2012

У меня есть такой список 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 ]

2 голосов
/ 12 февраля 2012

С 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'])])]

Обратите внимание, что для элементов списка, которые содержат ненумерованныеlist, возвращается кортеж, в котором первый элемент является строкой в ​​элементе списка, а второй элемент является списком с содержимым ненумерованного списка.

0 голосов
/ 12 февраля 2012

Вы можете использовать Тип отображения: Словари

...