Python: содержимое <li>в списках с BeautifulSoup - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть следующие данные:

<li>
  <div>Content1</div>
</li>
<li>
  <div>Content2</div>
  <div>Content3</div>
  <div>Content4</div>
</li>
<li>
  <div>Content5</div>
  <div>Content6</div>
</li>

Я хочу поместить содержимое каждого элемента li в отдельный список с BeautifulSoup.Это должно быть результатом:

List1 = ['Content1']
List2 = ['Content2', 'Content3', 'Content4']
List2 = ['Content5', 'Content6']

строка типа div = [a.get_text(strip=True) for a in soup.select('li>div')] помещает все содержимое в один список.Я изо всех сил пытаюсь создать отдельные списки для каждого элемента li и заполнить его нужным содержанием.Может кто-нибудь помочь?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вам просто нужно создать новый список для каждого li, например:

divs = [[div.get_text(strip=True) for div in li.find_all("div")] for li in soup.select('li')]
0 голосов
/ 13 февраля 2019

Вы можете использовать понимание вложенного списка

Пример:

from bs4 import BeautifulSoup

html = """<ul>
<li>
  <div>Content1</div>
</li>
<li>
  <div>Content2</div>
  <div>Content3</div>
  <div>Content4</div>
</li>
<li>
  <div>Content5</div>
  <div>Content6</div>
</li>
</ul>"""

soup = BeautifulSoup(html, "html.parser")
print([[j.get_text(strip=True) for j in i.find_all("div")] for i in soup.find_all("li")])

Выход:

[['Content1'], ['Content2', 'Content3', 'Content4'], ['Content5', 'Content6']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...