【问题标题】:R inconsistent results from readHTMLTable from XML package during web scrapingR 在网络抓取期间来自 XML 包的 readHTMLTable 的结果不一致
【发布时间】: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 &lt;- memoise(readHTMLTable) 并改用该函数。

标签: xml r parsing web-scraping web-crawler


【解决方案1】:

因此,如果您的唯一目标是获得可重现的结果,您可以使用缓存其输出的 readHTMLTable 的修改版本。在脚本的顶部,定义

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

并改用该函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2017-10-20
    相关资源
    最近更新 更多