如何从SEC 10-Ks中删除单个段落

时间:2017-05-09 18:44:32

标签: python html css beautifulsoup edgar

我正在开展一个项目,我需要将10-K分解为其组成段落。对于大约10-Ks,我可以做一些简单的事情,比如dfrm <- structure(list(cust_id = c(3, 3, 1, 1, 2), store = structure(c(2L, 1L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor")), .Names = c("cust_id", "store"), row.names = c(NA, -5L), class = "data.frame") ,但我也看到其他10-K使用soup.find_all('p')代替<div>个标签。以下是我看到公司宣布段落的三种不同方式:

使用空div标签在段落之间创建创建空间的情况:

<p>

在顶部或底部使用边距/填充以创建空间的情况:

<div></div><div>Text of a paragraph</div><div></div>

公司使用<div style="padding-top: 10pt">Text of a paragraph</div>`, `<div style="margin-bottom: 10pt"></div> 代码的情况:

<br>

我不得不为这三种情况中的每种情况编写新代码,我担心还有其他方法来标记我尚未遇到的段落。

问题:我是否可以使用包或方法来标准化所有这些声明分段符号的不同方式,还是应该继续为我遇到的每个新案例编写代码?

1 个答案:

答案 0 :(得分:0)

我不认为您可以在这里采用通用方法。但是,作为一种启发式方法,您可以将带有文本内容的<div>视为一个段落,而不用加上其他标签(例如其他<div>)。

您甚至可以尝试编写一个XPath查询,该查询将捕获此条件并使用XML解析器枚举节点。或将可能的文本括起来的标签列表传递到soup.find_all(),例如:

soup.find_all(['div', 'p'])

并通过仅包含文本内容的非空发现将其视为段落。