【開放數據轉換PDF實戰】學Python程式做分析 逐步拆解年度計劃2

撰文:簡浩德
出版:更新:

《香港01》早前報道,政府以PDF格式公布政府83個部門的開放數據計劃,並就計劃內容進行分析。要分析這批資料,其中一個方法就是編寫程式以撮取資料,今次特別推出一系列文章,逐步講解如何利用程式,一次過將83個PDF轉為分析用數據,亦希望藉此讓讀者了解機讀格式檔如何有助分析。

【第3講】

TL;DR

1)下載一個網頁 HTML
2)抽取所需 PDF 連結
3)使用正規表達式( regular expression)

現時的問題(#6):有了每個政府部門「開放數據政策」年度計劃的網頁連結,怎樣開始?

進度表。

接下來要從「開放數據政策」網頁中抽取出正確的年度計劃文件 PDF 檔案的連結出來,才能下載它們到電腦,繼而進一步處理內裡的資料。

使用「純文字編輯程式」(有關使用方法可參考這篇)新增一個文字檔案,複製並貼上以下程式碼:

並且儲存成新一個 .py 檔案(詳情可參考這篇)。

有關執行上面的 Python 程式,則可參考這篇 。

運行的效果如下:

運行畫面。

會看到各部門的計劃文件的 PDF 檔案名稱命名方法不一,下載到檔案也不夠憑檔案名稱立即判斷是來自哪個政府部門的計劃文件。這個情況非常不利一般市民快速地從一堆 PDF 檔案中找出想要的文件。

一些部門網頁顯示年度計劃文件異常地複雜,於原始碼中使用 JavaScript 動態地判斷使用者是繁體或是簡體介面,才決定顯示哪一個版本的年度計劃文件,採取這方法的部門包括「漁農自然護理署」、「香港天文台」、「在職家庭津貼辦事處」等。

亦有一些部門年度計劃文件的連結是使用 JavaScript 彈出年度計劃文件,「發展局」、「民政事務局」都採取這方法,這裡通通需要在程式做額外處理。

部門網頁內容管理系統由不同時期的負責單位開發及維護,版本各有差異,造成歷史遺留下來的問題。

為了簡化程式,示範只能以「寫死」(hard code)的方式處理這些與眾不同的部門,建立相應 PDF 檔案連結,方便大量處理。

請複製下列程式碼,並貼上到「純文字編輯程式」中(有顏色的程式碼為新的更動,需多加注意):

並且儲存成新一個 .py 檔案(詳情可參考這篇)。

有關執行上面的 Python 程式,則可參考這篇 。

運行後,會得出 83 個 PDF 檔案連結:

運行畫面。

小結:
行文至此已經把各政府部門的「開放數據政策」年度計劃的 PDF 檔案連結已具備,即將可以開始下載 PDF 檔案到電腦,以作進一步分析本年度政府開放數據數據集。

下周再續...

注意事項:
此系列以 Windows 7 中文版 及 Python 3.7.2 於 2019年1月28日至31日期間測試,並力求有關資料於上述期間內準確,惟市面上不同電腦作業系統或會有不相同的執行結果,希望讀者理解。如有任何使用上的困難,請詳細參閱互聯網上其他相關資源,或向其他擁有此項相關專門知識的人士或機構進一步查詢。一切資料均以政府網頁公布為準,《香港01》將不為有關資料引起之任何損失或誤會負責。