我在解析SEC Edgar files
时遇到问题Here is an example of this file
最终结果是我希望<XML>
和</XML>
之间的内容成为我可以访问的格式。
到目前为止,我的代码不起作用:
scud = open("http://sec.gov/Archives/edgar/data/1475481/0001475481-09-000001.txt")
full = scud.read
full.match(/<XML>(.*)<\/XML>/)
答案 0 :(得分:3)
好的,有几件事是错的:
这是一段快速代码,用于检索页面,删除垃圾,并将生成的内容解析为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
答案 1 :(得分:1)
我建议在IRB练习并阅读docs for 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">]>]
应该让你去
答案 2 :(得分:1)
鉴于这是在一年前被问到的,答案可能是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'的文档。