如何把所有開放資料都爬下來?

純粹從一個技術的角度,如何把所有的開放資料爬下來?假如先考慮台灣好了。

  • 連同前幾天成立的立法院開放資料,台灣共有 17 個開放資料平台,並持續成長中:(中央)政府平台、農業、文化、環境、食品藥物、內政、客家、臺北、新北、新竹、臺中、南投、臺南、宜蘭、高雄、金門。
  • 每一個來源,會有不同的資料介接 API 介接格式。另外,每一個來源對於描述自己的資料集都可能有一些系統慣性,想像是 A 平台都是使用 100/12/12 來儲存日期,但 B 平台是用 2011/12/12。
  • 粗估資料應該總共有 10,000 筆,(估計的方式是拿資料最多的(中央)政府資料開放平台上 5,000 多筆乘以二)。而且這些的資料某一些會定期更新。所以中間判斷、轉檔、清理的程序應該是透過自動的程式,會需要是自動,而非手動。

寫一隻資料爬蟲不是一個太困難的問題,一隻爬蟲需要費工的地方,就是在於不同的環境設定。上述 17 個平台,10,000 筆的資料,或許有一些相似的案例,可以共用一些元件。最完美的情況,是可以把這些不同的環境設定歸納在一個檔案,把環境設定低到爬蟲產生器,然後自動去更新。

但除了台灣之外,假如我們的終極目標是要把全世界的資料全部都倒進來,我們可能需要進一步思考上面的步驟可以怎麼樣 scale。一個很好測試 scale 的方法,是問說:「假如下一次要把另外一個國家的資料全部倒進來的時候,會需要花多少的時間?」。或許有一個文字說明,紀錄曾經發生過的資料問題,會對以後也很有幫助。

我們接下來打算把全台灣的資料都倒進來,希望這一系列的文章可以作為文字說明。