最终结果是我希望将这些内容转换为我可以访问<XML>
的</XML>
格式。
到目前为止,这是我的代码不起作用:
scud = open("http://sec.gov/Archives/edgar/data/1475481/0001475481-09-000001.txt")
full = scud.read
full.match(/<XML>(.*)<\/XML>/)
最终结果是我希望将这些内容转换为我可以访问<XML>
的</XML>
格式。
到目前为止,这是我的代码不起作用:
scud = open("http://sec.gov/Archives/edgar/data/1475481/0001475481-09-000001.txt")
full = scud.read
full.match(/<XML>(.*)<\/XML>/)
好的,有几件事是错误的:
下面是一段用于检索页面、去除垃圾并将结果内容解析为 XML 的快速代码:
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::XML(
open('http://sec.gov/Archives/edgar/data/1475481/0001475481-09-000001.txt').read.gsub(/\A.+<xml>\n/im, '').gsub(/<\/xml>.+/mi, '')
)
puts doc.at('//schemaVersion').text
# >> X0603
我建议在 IRB 练习并阅读Nokogiri的文档
> require 'nokogiri'
=> true
> require 'open-uri'
=> true
> doc = Nokogiri::HTML(open('http://sec.gov/Archives/edgar/data/1475481/0001475481-09-000001.txt'))
> doc.xpath('//firstname')
=> [#<Nokogiri::XML::Element:0x80c18290 name="firstname" children=[#<Nokogiri::XML::Text:0x80c18010 "Joshua">]>, #<Nokogiri::XML::Element:0x80c14d48 name="firstname" children=[#<Nokogiri::XML::Text:0x80c14ac8 "Patrick">]>, #<Nokogiri::XML::Element:0x80c11fd0 name="firstname" children=[#<Nokogiri::XML::Text:0x80c11d50 "Brian">]>]
那应该让你去
鉴于这是在一年前提出的,答案可能是 OBE,但该研究员应该做的是检查网站上的所有文件,并注意实际的归档细节可以在以下位置找到:
http://sec.gov/Archives/edgar/data/1475481/000147548109000001/0001475481-09-000001-index.htm
在此范围内,您将看到 XML 文档是在已经被解析出来准备进一步操作之后:
http://sec.gov/Archives/edgar/data/1475481/000147548109000001/primary_doc.xml
但是请注意,最后的实际文件名由文件的提交者确定,而不是由 SEC 确定。因此,您不能依赖始终为“primary_doc.xml”的文档。