在python中从html中抓取文本,然后将文本保存在变量中而不使用运算符\n

2024-06-16 15:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已使用以下代码将html文件中的文本保存在名为“data”的变量中:

from bs4 import BeautifulSoup, NavigableString, Tag

soup=BeautifulSoup(html, "lxml")
data = "ANALYSIS\n"
for header in soup.find_all('h2', text=re.compile('Analysis')):
    nextNode = header
    while True:
        nextNode = nextNode.nextSibling
        if nextNode is None:
            break
        if isinstance(nextNode, Tag):
            if nextNode.name == "h2":
                break
            data = data + "\n\n" + nextNode.text

我需要对我的数据变量做两件事: 1.删除行中不需要的\n,然后 2.在调用数据变量时,\n在段落之间保留格式,\n但不显示

我的目标是将数据变量最终保存到excel文件中

目前我的输出是:

“分析\n\n\nOVERVIEW\n\n财务改善大幅改善;TSR的表现优于\n EER。所有基于收益和盈利能力的衡量指标均显示出同比改善\n\n年度激励\n\n激励指标基本不变,但目标目标的披露\n进一步增强。与前一年一样,2018年度激励计划由五个公司类别组成:(i)健康、安全和环境,(ii)运营,(iii)财务,(iv)战略里程碑,以及(v)TSR。公司披露了每个类别中的某些指标,包括相关指标的目标和支出矩阵。为战略里程碑类别下的三个指标披露了不同的\n目标,与2017年相比,这是一个进步,当时指标中的目标通常是不确定的。除了相关指标外,\n没有披露阈值或最大目标

但我希望的输出是(存储在excel文件中):

分析

概述

财务状况大幅度改善;TSR表现优于同行。所有基于收益和盈利能力的指标均显示出同比改善

年度奖励

虽然目标目标的披露进一步加强,但激励指标基本不变。与前一年一样,2018年度激励计划由五个公司类别组成:(i)健康、安全和环境,(ii)运营,(iii)财务,(iv)战略里程碑和(v)TSR。该公司披露了每个类别中的某些指标,包括相关指标的目标和支出矩阵。针对战略里程碑类别的三个基本指标披露了不同的目标,这是2017年的一个进步,当时该指标中的目标通常是定性的。除了相关指标外,没有披露阈值或最大目标

请告知我如何以这种格式保存数据?谢谢


Tags: 文件数据目标dataifhtml公司类别
1条回答
网友
1楼 · 发布于 2024-06-16 15:25:19

您确实不需要\n\n参与您正在尝试的操作。应该做的是将数据附加到列表中


from bs4 import BeautifulSoup, NavigableString, Tag

soup=BeautifulSoup(html, "lxml")
data = ["ANALYSIS"]
for header in soup.find_all('h2', text=re.compile('Analysis')):
    nextNode = header
    while True:
        nextNode = nextNode.nextSibling
        if nextNode is None:
            break
        if isinstance(nextNode, Tag):
            if nextNode.name == "h2":
                break
            data.append(nextNode.text)

这允许您执行许多文件IO操作,包括:

with open("outfile.csv", "a") as output:
  for entry in data:
    outfile.write(data+"\n\n")
  outfile.close()

这里我使用的是CSV,因为CSV是一种与Excel兼容的无标记文件类型。Excel以与标准电子表格相同的格式呈现CSV文件

要查看数据,您需要使用以下命令迭代数组:


for entry in data:
  print(entry+"\n")

这将给你:

分析

概述

财务状况大幅度改善;TSR表现优于同行。所有基于收益和盈利能力的指标均显示出同比改善

相关问题 更多 >