簡體   English   中英

使用XML和RCurl在R中解析HTML

[英]Parsing HTML in R using XML and RCurl

我正在嘗試解析網站的內容,但收到錯誤消息。 我不知道如何處理該錯誤:

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

關於如何解決此問題的任何想法?

您不需要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有一個參數,它允許您指定要跳過的行數。

> 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

存儲在www.sec.gov網站上的文件是不同類型文件的混合。 有些是純文本,有些是jpg,有些是gif,有些是pdf,有些是XML,有些是XBRL,有些是html,還有一些。 您使用的示例文件是“ RAW傳播”文件類型,它實際上是任何其他類型或所有其他類型的組合。

文件名“ 0001193125-06-125763.txt”是“登錄號”和txt擴展名的串聯。 此RAW傳播文件由標題數據和一系列“ <DOCUMENT> .... </ DOCUMENT>”標記集組成。 開始和結束文檔標記之間是“歸檔”中的各種“文件”。

歸檔中的每個不同文件都應分別處理。 PDFS,JPG,GIF文件類型為UUEncoded,應為UUdecoded。 其他諸如TXT,HTML,XML,XBRL的文件應視為純文本,並在需要時解析為適當的類型。

標頭數據標記有關提交文件的公司,人員,申報人,申報人代理等的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM