1

我正在尝试解析网站的内容,但收到一条错误消息。我不知道如何处理错误:

require(RCurl)
require(XML)
html <- getURL("http://www.sec.gov/Archives/edgar/data/8947/000119312506125763/0001193125-06-125763.txt")
doc <- htmlParse(html, asText=TRUE)

这是我收到的错误消息:

错误:XML 内容似乎不是 XML,也无法识别文件名

我在 Mac 上工作:

> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] plyr_1.8          rJava_0.9-4       R.utils_1.26.2    R.oo_1.13.9       R.methodsS3_1.4.4 gsubfn_0.6-5      proto_0.3-10      RCurl_1.95-4.1   
[9] bitops_1.0-6      splus2R_1.2-0     stringr_0.6.2     foreign_0.8-54    XML_3.95-0.2     

loaded via a namespace (and not attached):
[1] tcltk_3.0.1 tools_3.0.1

关于如何解决这个问题的任何想法?

4

3 回答 3

2

您不需要 curl 来获取文件,内置工具可以从 url 读取测试(例如。scanread.table)。

您收到此错误的原因是该文件不是有效的 XML 或 HTML。去掉标签之前的所有行<HTML>,你应该很高兴。

sec <- scan(file = "http://www.sec.gov/Archives/edgar/data/8947/000119312506125763/0001193125-06-125763.txt", what = "character", sep ="\n",  allowEscapes = TRUE)
sec <- sec[56:length(sec)]
secHTML <- htmlParse(sec)

还有其他不那么难看的方法来获取文件,但是一旦你去掉“文本”前导 XML 应该能够解析它。

或者,我认为有一个参数htmlParse允许您指定要跳过的行数。

于 2013-11-03T21:05:04.100 回答
2
> txt <- readLines(url("http://www.sec.gov/Archives/edgar/data/8947/000119312506125763/0001193125-06-125763.txt"))
> head(txt)
[1] "-----BEGIN PRIVACY-ENHANCED MESSAGE-----"                         
[2] "Proc-Type: 2001,MIC-CLEAR"                                        
[3] "Originator-Name: webmaster@www.sec.gov"                           
[4] "Originator-Key-Asymmetric:"                                       
[5] " MFgwCgYEVQgBAQICAf8DSgAwRwJAW2sNKK9AVtBzYZmr6aGjlWyK3XmZv3dTINen"
[6] " TWSM7vrzLADbmYQaionwg5sDW3P6oaM5D3tdezXMm7z1T+B+twIDAQAB"    

> length(txt)
[1] 5517
于 2013-11-03T21:08:00.620 回答
1

www.sec.gov 网站上存储的文件混合了不同类型的文件。有些是纯文本,有些是jpg,有些是gif,有些是pdf,有些是XML,有些是XBRL,有些是html,等等。您使用的示例文件是“RAW Dissemination”文件类型,它实际上是任何或所有其他类型的组合。

文件名“0001193125-06-125763.txt”是“入藏号”和txt扩展名的串联。此 RAW 传播文件由 Header Data 和一系列“<DOCUMENT> ....</DOCUMENT>”标签集组成。开始和结束 DOCUMENT Tag 之间的内容是“归档”中的各种“文件”。

文件中的每个不同文件都应单独处理。PDFS、JPG、GIF 文件类型是 UUEncoded,应该是 UUdecoded。TXT、HTML、XML、XBRL 等其他内容应被视为纯文本,并在需要时被解析为适当的类型。

标头数据标记有关已提交备案的公司、人员、申报人、申报人代理等的信息。

于 2013-11-11T12:54:13.870 回答