Py学习  »  Python

python:beautifulsoup列表中<li>的内容

mstr • 4 年前 • 886 次点击  

我有以下数据:

<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元素创建单独的列表并用正确的内容填充它。有人能帮忙吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/41082
 
886 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Adelin
Reply   •   1 楼
Adelin    5 年前

你只需要为每个 li ,像这样:

divs = [[div.get_text(strip=True) for div in li.find_all("div")] for li in soup.select('li')]
Rakesh
Reply   •   2 楼
Rakesh    5 年前

您可以使用嵌套列表理解

前任:

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