我有 40,000 个 HTML 文件。每个文件都有一个包含特定公司损益表的表格。
我想将所有这些数据刮到 Stata 中。(或者,放入 Excel/CSV 文件)。最终产品应该是一个 Stata/Excel 文件,其中包含所有公司的列表及其资产负债表的详细信息(收入、利润等)
我可以知道如何做到这一点吗?我尝试了 Outwit,但似乎还不够好。
Stata 并不是完成这项工作的最佳工具。您必须使用低级file
命令来读取输入文本文件,然后解析出相关表(同样,使用低级字符串处理)。将它们放入数据集中是最简单的部分;你可以
expand 2 in l
replace company = "parsed name" in l
replace revenue = parsed_revenue in l
等等,或者使用post
力学。运气好的话,你会发现一些可能使它更简单的包,但我不知道有什么,而且findit html
似乎没有带来任何可用的东西。
Stata 不是这项工作的好工具。原则上是可以的。就我个人而言,我已经做过类似的事情:将 ascii 文件读入 Stata,解析它们并从中提取信息。我已使用insheet将数据转储到 Stata 中。然后我用Stata的字符串函数处理了数据。这有点麻烦。这些文件的结构非常简单明了。我不想想象当文件具有更复杂的结构时会发生什么。
我认为最好的策略是使用脚本语言,例如 Python、Perl 或 Ruby。提取包含在 html 表中的信息。结果可以很容易地写入 csv、Excel 甚至是 Stata (.dta) 文件。
你应该使用 Python beautifulsoup 包。从 HTML 文件中提取数据非常方便。以下是链接。
http://www.crummy.com/software/BeautifulSoup/
在文档中,有很多命令,但只有少数命令很重要。以下是重要的命令:
from bs4 import BeautifulSoup
#read the file
fp=open(file_name,'r')
data=fp.read()
fp.close()
#pass the data to beautifulsoup
soup = BeautifulSoup(html_doc, 'html.parser')
#extract the html elements by id and write result into file