2013-11-01 40 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的範圍。