-1

荷兰政府在一个网站上公布了它给予的补贴:

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

但是,从网站获取数据并不简单。如果您访问该站点,请选择“Gemeenschappelijk Landbouw Beleid”(Common Agriculture Polici,欧盟补贴计划)并在页面底部按“zoek”(zoek 意为“搜索”),您会从 100 个条目中获得一个表格。但我无法将其放入 R。似乎在您按下“zoek”后,该页面是使用 JavaScript 生成的。

我的问题是:

  1. 我如何从网站上抓取这个?

  2. 我如何获得其他900页(总共有90K条记录)

我要求政府在 XLS 中向我提供这些数据,但出于“隐私原因”,他们不会。但是这样没有人可以检查。我不喜欢那样。;-)

4

2 回答 2

2

如果您没有看到 url 更改,则该请求通常是通过 ajax 或通过对同一页面的 post-request 完成的。在这种情况下,它是通过带有一些参数的某个页面的 ajax POST 请求来完成的。要了解加载了哪些参数的页面,请打开您的开发者控制台。您可以通过在大多数浏览器中右键单击并单击“检查元素”来执行此操作,或者单击F12. 转到网络选项卡,然后单击搜索按钮。您会在弹出的网络选项卡中看到一个请求。检查此请求。您会注意到这是对/pls/feed/glb2012. 您也可以在那里找到请求参数。

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

于 2013-11-01T12:34:32.060 回答
0

使用比 R 更适合抓取的工具。例如,python 中的 Scrapy 或 BeautifulSoup,perl 中的 Mojolicious 或 Web::Scraper,...... ,然后将其放入 R 中。

您需要弄清楚浏览器-服务器通信到底是什么。数据可能不在您访问该页面时看到的 url 在 Wireshark 中快速捕获并查看 HTTP 请求将显示这一点。

看起来,根据您的经验水平(并且可能不想为此学习新工具),您可能希望有人为您做这件事。把它贴在 elance 上,确保做它的人做了一堆抓取项目,最多只需要几个小时。

如果您确实想这样做,请按照抓取教程和食谱示例进行操作,但请记住在执行此操作时检查 Wireshark 中的实际通信。

于 2013-11-01T11:02:00.947 回答