2014-02-13 47 views
1

我遇到了一個讓我瘋狂的問題。在Web抓取過程中,來自XML包的readHTMLTable的R不一致結果

我想讀取一個目錄結構,它提供了不一致的結果。

下面是一些代碼:

library(XML) 

output <- readHTMLTable("http://www.sec.gov/Archives/edgar/data/876603/") 
output 

如果我執行這個10倍左右,我將獲得「上次修改時間」不同的結果。

這裏是每個輸出的第一對夫婦排。

案例1:

       Name  Last modified Size    Description 
1        <NA>    <NA> <NA>     <NA> 
2     Parent Directory     Â -      Â 
3        00/ 02-Feb-2013 16:34 -      Â 
4   0000876603-00-000005.txt 15-Feb-2000 15:36 1.0M Document: Text Document 

案例2:

       Name  Last modified Size    Description 
1        <NA>    <NA> <NA>     <NA> 
2     Parent Directory     Â -      Â 
3        00/ 09-Feb-2013 16:31 -      Â 
4   0000876603-00-000005.txt 15-Feb-2000 15:36 1.0M Document: Text Document 

如果你去的網站,你可以告訴大家,第2種情況是正確的。

有誰知道爲什麼這會給我不一致的結果?

有沒有解決方案?

提前致謝!

+0

運行很多次後,我能夠複製您的問題。 'table(replicate(100,as.character(readHTMLTable(「http://www.sec.gov/Archives/edgar/data/876603/」)[[1]] [3,3])))'粗略地給出50/50。最好的猜測是網站/服務器正在使用數據不同步的鏡像系統。 – flodel

+0

我在想這可能是這種情況,但我從來沒有碰到過瀏覽器。我的目標是否有任何可以做到的努力來獲得一致的結果? – Brad

+0

嗯,不知道。你能否解釋爲什麼你不止一次訪問數據?多久? – flodel

回答

0

因此,如果您唯一的目標是獲得可重現的結果,您可以使用緩存其輸出的readHTMLTable的修改版本。在你的腳本的頂部,定義

library(memoise); 
my.readHTMLTable <- memoise(readHTMLTable) 

,並使用該功能來代替。