python - 美丽的汤添加在 html 末尾有类
问题描述
我有一个包含多个的 HTML 文件标签(div 内也有多个 div)。我想添加一个新的标记与类一起到 HTML 末尾的特定位置。我也尝试了append、insert和insert_after/insert_before,但是,它没有按我的预期工作。
我的html输入是:
<div id="page">
<div id="records">
<div class="record">
<div class="header">
<div class="title">
Something here to display
</div>
</div>
<div class="disclaimer">
<p>Here i want to print content</p>
</div>
</div>
<div class="record">
<div class="header">
<div class="title">
Something here to display again once
</div>
</div>
<div class="disclaimer">
<p>Here i want to print content again once</p>
</div>
</div>
<div class="record">
<div class="header">
<div class="title">
Something here to display second time
</div>
</div>
<div class="disclaimer">
<p>Here i want to print content second time</p>
</div>
</div>
</div>
</div>
我想在末尾添加新<div>
标签,class="record"
在 . 的结束标签之前<div id="records">
。
输出如下所示:
<div id="page">
<div id="records">
<div class="record">
<div class="header">
<div class="title">
Something here to display
</div>
</div>
<div class="disclaimer">
<p>Here i want to print content</p>
</div>
</div>
<div class="record">
<div class="header">
<div class="title">
Something here to display again once
</div>
</div>
<div class="disclaimer">
<p>Here i want to print content again once</p>
</div>
</div>
<div class="record">
<div class="header">
<div class="title">
Something here to display second time
</div>
</div>
<div class="disclaimer">
<p>Here i want to print content second time</p>
</div>
</div>
<div class="record">
<div class="header">
<div class="title">
Something here to display 3rd time
</div>
</div>
<div class="disclaimer">
<p>Here i want to print content 3rd time</p>
</div>
</div>
</div>
</div>
就我而言,数量<div class="record">
不是固定的,数量可能总是不同。
我想在 python 中使用 BeautifulSoup 获得这个问题的解决方案/建议。
解决方案
您可以insert_after
在最后一项之后使用soup.find_all('div', class_='record')
:
from bs4 import BeautifulSoup
html = '<div id="records"> <div class="record"> <div class="header"> <div class="title"> Something here to display </div> </div> <div class="disclaimer"> <p>Here i want to print content</p> </div> </div> <div class="record"> <div class="header"> <div class="title"> Something here to display again once </div> </div> <div class="disclaimer"> <p>Here i want to print content again once</p> </div> </div> <div class="record"> <div class="header"> <div class="title"> Something here to display second time </div> </div> <div class="disclaimer"> <p>Here i want to print content second time</p> </div> </div> </div>'
soup = BeautifulSoup(html, 'html.parser')
extra_html = '''
<div class="record">
<div class="header">
<div class="title">
Something here to display 3rd time
</div>
</div>
<div class="disclaimer">
<p>Here i want to print content 3rd time</p>
</div>
</div>'''
soup.find_all('div', class_='record')[-1].insert_after(BeautifulSoup(extra_html, 'html.parser')) # [-1] selects the last item
输出print(soup.prettify())
:
<div id="records">
<div class="record">
<div class="header">
<div class="title">
Something here to display
</div>
</div>
<div class="disclaimer">
<p>
Here i want to print content
</p>
</div>
</div>
<div class="record">
<div class="header">
<div class="title">
Something here to display again once
</div>
</div>
<div class="disclaimer">
<p>
Here i want to print content again once
</p>
</div>
</div>
<div class="record">
<div class="header">
<div class="title">
Something here to display second time
</div>
</div>
<div class="disclaimer">
<p>
Here i want to print content second time
</p>
</div>
</div>
<div class="record">
<div class="header">
<div class="title">
Something here to display 3rd time
</div>
</div>
<div class="disclaimer">
<p>
Here i want to print content 3rd time
</p>
</div>
</div>
</div>
推荐阅读
- json - 如何从 Batch kafka 主题中读取 Json 数据并使用 scala 语言加载到数据框中
- android - IOS:电话认证在IOS真机上没有收到OTP
- api-gateway - API 网关,API 管理。& SAP CPI
- android - 如何使用 Kotlin 每秒更改 ImageView 中的图片
- numbers - 我想创建一个函数,它接受一个只包含数字的数组并返回较大的
- reactjs - 在效果中更新 ref.current 与直接在渲染中是否有任何意义?
- reactjs - 每次文本框更改页面上的文本时,query.onSnapshot() 都会运行两次 - Firebase 并做出反应
- c# - 如何修复随机 FileSystemEnumerableIterator.MoveNext 错误。句柄无效
- entity-framework-core - EntityFramework更新数据库多个数据库上下文添加表不创建数据库
- javascript - 如何根据下拉列表中的值更新对象数组?