python - 使用 Beautiful Soup 将多个列表项包装在新标签 ('ul'/'ol' )中?

标签 python html list beautifulsoup

希望这很简单——我有几个段落。在 Beautiful Soup 中,我使用 link.parent.name = 'li' 将它们转换为列表但如果有人能让我知道如何将多个 li 标签的整个创建列表包装在新的 <ul> </ul> 中,我将不胜感激。标签?

由于给定页面上会有多个单独的列表,因此我希望能够选择所有同级列表(如果可能)并将它们全部包装在新标签中。

所以

<li>1</li>
<li>1</li>
<li>1</li>

<li>2</li>
<li>2</li>
<li>2</li>

<li>3</li>
<li>3</li>
<li>3</li>

看起来像

<ul>
<li>1</li>
<li>1</li>
<li>1</li>
</ul>

<ul>
<li>2</li>
<li>2</li>
<li>2</li>
</ul>

<ul>
<li>3</li>
<li>3</li>
<li>3</li>
</ul>

感谢您的帮助。

最佳答案

from bs4 import BeautifulSoup

htmlText = '''
<li>1</li>
<li>1</li>
<li>1</li>

<li>2</li>
<li>2</li>
<li>2</li>

<li>3</li>
<li>3</li>
<li>3</li>
'''

paragraphs = htmlText.split('\n\n')   # splits paragraph whenever there is an empty new line

for paragraph in paragraphs:

    soup = BeautifulSoup(paragraph)
    lis = soup.find_all('li')
    ul = soup.new_tag('ul')

    for li in lis:
        ul.append(li)

    print(ul)

返回:

<ul><li>1</li><li>1</li><li>1</li></ul>
<ul><li>2</li><li>2</li><li>2</li></ul>
<ul><li>3</li><li>3</li><li>3</li></ul>

最重要的部分是定义 paragraphs 变量。

关于python - 使用 Beautiful Soup 将多个列表项包装在新标签 ('ul'/'ol' )中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59033884/

相关文章:

javascript - 在文本框中设置第一个单词的背景颜色?

python - 从用户输入中获取矩阵并将其定义为列表列表时遇到问题

python - 如何在 Python+Opencv 中找到两个轮廓之间的角度

iphone - 转换 iPhone 视频 - ffmpeg

python - 当已经托管 rstudio 和 rapache 时,将 django 站点添加到 ubuntu 上的 apache2

javascript - TR 悬停影响 BROTHER

javascript - 将图像拖放到购物篮中

python - 更新 Pandas 中的等效位置

python - 按时间顺序重新排列包含日期的列表

python - 带有 python 列表的循环引用