2011-04-14 73 views
2

我想要一個基於桌面的程序,可以從基於Web的API(如Google Analytics,SEOMoz和其他類似服務)檢索信息,客戶端的請求非常隨意。然後他們希望部分或全部這些結果存儲在中央位置。他們表示,他們根本不需要Web應用程序,但他們確實希望能夠將數據存儲在局域網上的「服務器」(讀取服務器版桌面客戶端)上。該程序應該能夠在Windows上運行。 Linux和OS X支持將會很好。使用Web API的Python桌面程序

我有一些編程經驗,並且對Python非常熟悉,所以我正在考慮使用它。我的問題是,我不確定LAN上的客戶端/服務器之間的通信以及客戶端和基於Web的API之間的通信。

1)這可能嗎?如果是這樣,那麼尋找API集成和網絡通信資源的好地方/有什麼好的例子呢?

2)關於要注意什麼(例如常見錯誤,主要安全問題)的任何建議/提示?

3)任何方式會比我上面概述的更好?

4)數據庫,有什麼好的選擇?我希望儘可能使其儘可能獨立,並且或多或少具有獨立性(依靠最少量的已安裝軟件)。

感謝您的任何和所有的投入!

回答

1
  1. 是的,urllib,urllib2和urlparse是讀取到/從URL的核心Python庫。我建議使用PyQt作爲GUI框架(pyGTK,wxWidgets和tkinter也可以,它們在你提到的三個OS上運行都很好)。 PyQt包含您需要的所有內容,而不會涉及任何其他庫。它包括網絡訪問控制,用於URL解析和構建的QUrl以及用於顯示數據的大量GUI工具。

  2. 沒什麼出常態的,不同之處見[1]在4

  3. 看到1約PyQt的。但是你最終要做的是製作你想訪問的URL(包括所有獲取/發佈參數),發送數據,監聽數據,解析數據,放入數據庫。客戶端只需查詢數據庫,獲取結果,過濾/訂購/管理將在gui代碼中完成。 QtDeclarative可能是允許用戶創建自己的查詢的好選擇(思考但尚未實現),您也可以執行它。我會建議postgres,mysql或任何數據庫,關係或不(看到mongodb,但不認爲PyQt支持它,但你可以用pyqt很好地使用任何python庫)。然後,您可以將數據存儲在那裏,讓客戶端查詢它,並讓客戶端坐在服務器上,它具有額外的功能來查詢網站並插入數據。儘管這可能更適合用作獲取數據並插入數據的cli工具數據庫(所以你可以運行它如果想要的cron作業)。

您只需要開發客戶端代碼和數據庫模式。 [1]記住db的可以有多個客戶端,並且用戶可以直接連接到數據庫服務器。唯一需要注意的是將服務器配置爲僅偵聽lan以接收客戶端,並且用戶權限設置正確。這與連接一個Web應用程序到數據庫只是在美觀上不同。您只是授予更多用戶和客戶訪問權限。

你最大的問題應該搞清楚如何處理GUI編程的沉悶:P

+0

謝謝!這看起來足以至少將我指向正確的方向,而這正是我所需要的。 – David 2011-04-16 15:44:39

相關問題