2013-11-01 46 views
-1

网页荷兰政府宣扬它给出了一个网站上的补贴:从Java刮数据生成有R

http://www.hetlnvloket.nl/databank-eu-subsidiegegevens-2012#

但是,它不是简单明了,从网站获得的数据。如果你到现场,选择'Gemeenschappelijk Landbouw Beleid'(普通农业政策,欧盟补贴计划),然后在页面底部按'zoek'(zoek表示'搜索'),你会从100个条目中获得一张表。但是我不能把它写进R.看起来这个页面是在你按'zoek'后用JavaScript生成的。

我的问题是:

  1. 如何凑这个从网站?

  2. 如何得到其他900页

我要求政府给我这个XLS数据(总共有90K记录),但他们不会,对于隐私的原因”。但这样没人可以检查。我不喜欢那样。 ;-)

+0

你确定你允许刮这些数据吗?鉴于你在2)中陈述的内容,我相信你没有。 – Gimby

+0

我怀疑隐私是一个不了解开放治理和信息自由的人,我认为这两者都是荷兰人通常比较擅长的。 XLS,但?您需要一个API,而不是专有的文件格式。 – halfer

+0

它看起来像通过AJAX获得的数据,应该是可以抓取的。如果你只是在数据快照之后,看看导入。io - 他们的桌面爬虫可能会提供帮助。 – halfer

回答

0

使用比R更适合刮擦的工具。例如,Scrapy或BeautifulSoup在Python中,Mojolicious或Web ::刮刀在Perl中,...你想刮一把刮刀,输出数据在CSV(或一些类似的标准),然后把它变成R.

你需要弄清楚的浏览器 - 服务器通信到底是什么。该数据可能不是,而是您转到该页面时看到的网址。在Wireshark中快速捕获并查看HTTP请求将显示。

它看起来像,根据您的经验水平(和可能,不想学习新的工具只是为这个)你可能喜欢有人为你做。将它张贴在elance上,确保无论谁做了一堆刮擦项目,最多只需要几个小时。

如果你想这样做,然后按照刮教程和菜谱的例子,但记住一定要在Wireshark的实际通信为你做到这一点。

+1

观看Firebug中的对话或大多数浏览器内置的本地网络观察器更为简单。 – halfer

2

如果你没有看到URL的变化,请求通常是通过AJAX实现,或通过请求后,以相同的页面。在这种情况下,它通过一个带有一些参数的特定页面的ajax POST请求完成。要找出用什么参数加载哪个页面,请打开您的开发人员控制台。您可以通过在大多数浏览器中单击鼠标右键并单击“检查元素”或点击F12来完成此操作。转到网络选项卡并单击搜索按钮。您会在网络标签中弹出一个请求。检查此请求。您会注意到这是对/pls/feed/glb2012的请求。你也可以在那里找到请求参数。

至于“如何”刮这个问题。使用编程语言和你最喜欢的刮板库。建议一个库超出了StackOverflow的范围。