【发布时间】:2014-02-13 00:18:58
【问题描述】:
我遇到了一个让我发疯的问题。
我正在尝试读取目录结构,但结果不一致。
这里有一些代码:
library(XML)
output <- readHTMLTable("http://www.sec.gov/Archives/edgar/data/876603/")
output
如果我执行此操作 10 次左右,“上次修改”将得到不同的结果。
这是每个输出的前几行。
案例一:
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 是正确的。
有谁知道为什么这给了我不一致的结果?
有解决办法吗?
提前谢谢!
【问题讨论】:
-
运行多次后,我能够复制您的问题。
table(replicate(100, as.character(readHTMLTable("http://www.sec.gov/Archives/edgar/data/876603/")[[1]][3, 3])))给出大约 50/50。最好的猜测是网站/服务器正在使用数据不同步的镜像系统。 -
我在想可能是这种情况,但我从来没有在浏览器上遇到过。我有什么办法可以让结果保持一致?
-
嗯,不确定。您能解释一下为什么要多次访问数据吗?多久一次?
-
好吧,我实际上并没有尝试多次访问它。我只是检查代码以确保结果正确并遇到问题。理想情况下,我只需要做一次。另外,我认为你的推理是正确的,因为 SEC 有一个 FTP 镜像,我在那里得到了同样的效果。
-
因此,如果您的唯一目标是获得可重现的结果,您可以使用缓存其输出的
readHTMLTable的修改版本。在脚本的顶部,定义library(memoise); my.readHTMLTable <- memoise(readHTMLTable)并改用该函数。
标签: xml r parsing web-scraping web-crawler