You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何soup=BeautifulSoup可正常工作,soup2却为空?如何保留原始soup?

问题解答

1. 为什么soup2为空?

你用open()得到的data是一个文件流对象,第一次传给BeautifulSoup时,已经把流里的所有内容读完了,文件指针会移到文件末尾。第二次再用同一个data创建soup2时,流里已经没有内容可以读取,所以soup2是空的。

2. 如何创建多个独立的soup实例保留原始数据?

解决办法是先把文件内容一次性读取成字符串,再用这个字符串创建多个BeautifulSoup实例,这样每个实例都是独立的,互不影响:

url = r"tk2021.xhtml"
# 先读取文件内容到字符串,保存原始数据
with open(url, encoding="utf8") as f:
    html_content = f.read()

# 基于同一个字符串创建多个独立soup
soup_original = BeautifulSoup(html_content, "html.parser")  # 原始版本,不做修改
soup_modified = BeautifulSoup(html_content, "html.parser")  # 用于修改的版本

3. 移除xbrli:context下的xbrli:entity子标签的方法

针对用于修改的soup_modified,可以批量找到目标标签并删除:

# 找到所有xbrli:context标签
context_tags = soup_modified.find_all("xbrli:context")
for context in context_tags:
    # 找到当前context下的xbrli:entity标签并彻底移除
    entity_tag = context.find("xbrli:entity")
    if entity_tag:
        entity_tag.decompose()

# 此时soup_modified是修改后的版本,soup_original仍保留原始数据
print(soup_modified.prettify())

内容的提问来源于stack exchange,提问作者henri.haiti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:00:19