【问题标题】:Xbrl data extractionXbrl 数据提取
【发布时间】:2017-04-28 17:21:17
【问题描述】:

在这方面有点 a.newb,但我有大约 15,000 个包含 XBRL 数据的 html 文件。 我已经从http://download.companieshouse.gov.uk/en_monthlyaccountsdata.html 下载了这些文件 理想情况下,我想从所有这些文件中提取与公司名称和无形资产相关的信息,但我不确定如何执行此操作。

理想情况下,我希望将数据导出到单个 Excel 文件的列中。

任何帮助将不胜感激。

【问题讨论】:

  • 您需要某种形式的编程语言来解析 HTML 文件。我建议你查一下 Python 和 Beautiful Soup。
  • 您也可以在 YAML 中实现这一点 - 值得一试,但正如 @RaduGheorghiu 所说,您将需要某种编程语言。
  • 您将在哪个开发平台上完成这项工作?它是 .NET 工作的吗?

标签: xbrl


【解决方案1】:

回答有点晚,但没关系。首先,您可以查看VT Fact Viewer。它可以为您提供文档中 XBRL 事实的网格显示,并且您可以将它们导出到 Excel。到达那里后,您需要进行一些过滤,寻找“core:IntangibleAssets”或“uk-gaap:Intangible....”之类的标签。

但是,如果您要对大量文档(例如 CH 数据转储)执行此操作,那么您将需要开始使用编程或脚本语言自己进行一些“正确”的 xml 处理。但是,查看器仍然会有所帮助,因为它会向您展示您要提取的内容。

作为一个简单的示例,以下将为您提供一些 CSV 格式的无形资产数据,您可以在 Excel 中打开这些数据。 用 C# 编写(使用 LINQPad),因此您必须在需要时进行翻译:

string fname = @"C:\ch_data\Prod223_1770_00101234_20160331.html";
var doc = XDocument.Load(fname);
// The 'ix' namespace may use 2008 or 2013 schema so we'll just use the .LocalName property of the tag
var elements = doc.Root
    .Descendants()
    .Where(x => x.Name.LocalName == "nonFraction")
    .Where(x => x.Attributes().Any(a => a.Value.Contains("Intangible")));

var lines = new List<string>();
foreach (var element in elements)
{
    var attribs = element.Attributes();
    var ctx = attribs.FirstOrDefault(a => a.Name == "contextRef")?.Value ?? "";
    var dec = attribs.FirstOrDefault(a => a.Name == "decimals")?.Value ?? "";
    var scale = attribs.FirstOrDefault(a => a.Name == "scale")?.Value ?? "";
    var units = attribs.FirstOrDefault(a => a.Name == "unitRef")?.Value ?? "";
    var fmt = attribs.FirstOrDefault(a => a.Name == "format")?.Value ?? "";
    var name = attribs.FirstOrDefault(a => a.Name == "name")?.Value ?? "";
    var value = element.Value;

    string line = $"\"{ctx}\",\"{dec}\",\"{scale}\",\"{units}\",\"{name}\",\"{fmt}\",\"{value}\"";
    lines.Add(line);
    //Console.WriteLine(line);
}
File.WriteAllLines(Path.ChangeExtension(fname, "csv"), lines);

更改输入文件名以根据需要在目录或文件名列表中循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多