在python中从html中抓取文本,然后将文本保存在不带运算符的变量中



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

from bs4 import BeautifulSoup, NavigableString, Tag
soup=BeautifulSoup(html, "lxml")
data = "ANALYSISn"
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 + "nn" + nextNode.text

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

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

目前我的输出是:

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

但我想要的输出是(存储在excel文件中(:

分析

概述

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

年度激励

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

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

你真的不需要做什么。应该做的是将数据附加到列表中。


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+"nn")
outfile.close()

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

要查看数据,您需要使用遍历数组


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

这会给你:

分析

概述

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

最新更新