gpt4 book ai didi

python - BeautifulSoup:在每个标题后获取所有
    的所有内容

转载 作者:行者123 更新时间:2023-11-28 20:54:56 24 4
gpt4 key购买 nike

我有很长很长的标题列表,后面是列表:

<h2>Header1</h2>
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
<h2>Header2</h2>
<ul>
<li>D</li>
<li>E</li>
<li>F</li>
</ul>

等等。使用 BeautifulSoup 和相应的 header 在每个 header 之后获取所有列表的最紧凑的方法是什么?

理想情况下,结果将是一个字典,看起来像:

{
'header1': ['A','B','C'],
'header2': ['D','E','F'],
}

最佳答案

你可以尝试这个开始,在你有了想法之后进行优化。

import bs4

txt = '''\
<h2>Header1</h2>
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
<h2>Header2</h2>
<ul>
<li>D</li>
<li>E</li>
<li>F</li>
</ul>
'''

soup = bs4.BeautifulSoup(txt)

output = dict()

key = []

for _ in soup.findAll('h2'):
key.append(_.findAll(text=True)[0])

vec = [j.findAll('li') for j in soup.findAll('ul')]

for i in range(len(vec)):
output[key[i]] = []
for j in vec[i]:
output[key[i]].append(j.findAll(text=True)[0])

print(output)

输出

{'Header1': ['A', 'B', 'C'], 'Header2': ['D', 'E', 'F']}

编辑:更短更整洁的代码

from bs4 import BeautifulSoup

txt = '''\
<h2>Header1</h2>
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
<h2>Header2</h2>
<ul>
<li>D</li>
<li>E</li>
<li>F</li>
</ul>
'''

soup = BeautifulSoup(txt, 'html.parser')
output = dict()
header = soup.find_all('h2')

for num in range(len(header)):
temp = header[num]
key = temp.find_all(text=True)[0]
output[key] = []

for item in (soup.find_all('ul')[num]).find_all('li'):
output[key].append(item.find_all(text=True)[0])

print(output)

输出是一样的

{'Header1': ['A', 'B', 'C'], 'Header2': ['D', 'E', 'F']}

关于python - BeautifulSoup:在每个标题后获取所有 <ul> 的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58207964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com