Tag Archives: Python

TurboGears的cache decorator

問題 今天在寫TurboGears網頁時,因為遇到用matplotlib產生的圖片 @expose_matplot_figure def figure(self, id): return dict(figure=pieFigure(id), dpi=75) 如果每次都重新產生一張新圖片,流量大時對主機是件很浪費資源的事情,理所當然第一個想到的就是cache,而cache要能知道有什麼東西改變了是否需要重新產生,而最好能夠不用為了每個exposed的頁面寫一個cache,因此最好的辦法就是用decorator來使用,可以丟函數進去來判斷是否是一樣的東西,是否需要重新產生等等,正當我要開始寫時…

Posted in Python, 中文文章 | Tagged , | Comments Off on TurboGears的cache decorator

自動抓取無名相簿照片程式範例

自動抓取相簿相片 為了示範WebChuan的威力,我寫了一個簡單的範例,可以下載無名小站的某個相簿裡的所有照片 範例 它會一頁接著一頁抓下去,舉個例子,例如這個相簿,只要輸入相簿第一張相片的網頁連結,它就會一頁一頁接著抓下去,然後圖片都存到相同的目錄下 包裝好的程式 為了方便沒有安裝Python和WebChuan也能使用這個簡單的小程式,我把它打包成.exe的執行檔,可以從這裡下載 自動抓取無名相簿照片程式 執行download_photos.exe再貼上相簿裡第一張相片的網址連結就可以開始下載相片 請注意,如果抓太凶可能會遇到一個錯誤 999 Unable to process request at this time 似乎是Yahoo把你抓照片當成攻擊,換個IP繼續抓應該就可以了

Posted in Python, 中文文章, 分享 | Tagged , , , | 1 Comment

抓網頁的程式庫 : WebChuan

WebChuan 花了一些時間整理我先前提到設計下所寫出來的抓網頁模組,用Python寫基於Twisted和lxml,可以輕鬆地組織抓取網頁的流程,各種常用的功能都已經有了 我把它命名為WebChuan並且釋放成在MIT License下的Open source project http://webchuan.ez2learn.com/ 有興趣可以參考看看,目前還有很多事要做,包括生成文件、撰寫文件、測試等等,但是先前提到的基本功能都已經完備 http://webchuan.ez2learn.com/wiki/Examples/GetPageTitle 這裡有一個取得網頁標題的簡單程式可以執行看看

Posted in Python, 中文文章 | Tagged , , | 1 Comment

抓取網頁程式的架構設計

截取網頁的架構設計 我們先前談到了抓取網頁用的工具,但是光有工具是不夠的,良好的設計也是必要的,這次我們就來談談設計

Posted in Python, 中文文章, 設計 | Tagged , , , | 3 Comments

VirtualBox下跑FreeBSD的網路問題和安裝Python模組心得

昨天在VirtualBox上裝了FreeBSD,但是卻遇到無法上網的問題 #ping google.com ping: cannot resolve google.com: No address associated with name 看起來是網路沒有設定好,連DNS都找不到的樣子,於是在網路上找了一找,終於找到了解決方法 ifconfig pcn0 down ifcontig pcn0 media 10baseT/UTP ifconfig pcn0 up dhclient pcn0 解決了之後終於成功地在上面執行了我在Windows下寫的程式,一開始我連什麼指令用來抓檔案都不知道,我只知道curl這樣的指令,但它好像沒有這樣的指令,後來知到有fetch可以用,就裝好了easy_install之後就很方便,接著裝了Twisted,和lxml,而lxml並不是直接用easy_install就可以用,還得先安裝並編譯libxml2和libxslt,但其實也很簡單,先fetch下來,解開壓縮,然後執行 ./configure make install 編譯要花一小段時間,但沒想到這麼順利,沒有什麼編譯錯誤跑出來,完成後再用easy_install安裝lxml就可以了 寫一個小程式來測試 然後執行 Wow! 成功了!

Posted in Python, Unix-Like, 中文文章, 問題 | Tagged , , , , , , | 4 Comments

抓取網頁的最佳語言 : Python

最初 最早我用C/C++語言慢慢寫抓網頁的用它來抓網頁真的是程式,一開始甚至打算自己寫抓取網頁的函式庫,想說當做練習,可是HTTP協定 雖然不難,可是煩,要處理的細節太多了,後來受不了,轉而使用現成的Library : cUrl,但是C/C++語言開發這類東西的效率實在太慢了,我的程式不停的修改、不停的修改,光是編譯的時間就吃掉了不知道多少,字串的處理C/C++ 沒有內建正規表示法或一些好用的字串函數之類的,處理起來也礙手礙腳,當時,我想將我寫好的函數庫寫成能讓Lua呼叫的形式,或著甚是C/C++來呼叫Lua,因為C/C++有很多細節要處理,Memory leak有的沒有的雜事,我想要的只是專注在寫抓取網頁的程式,因此用Lua包裝似乎是不錯的選擇,但是開發時間太久了,事情一直沒有變好 直到

Posted in Python, 中文文章 | Tagged , , , | 43 Comments

py2exe 找不到Module的問題

py2exe的問題 接續上一篇所提到的問題 我今天在用py2exe打包一個架構在Twisted的程式成exe時遇到了一個問題,執行產生出來的執行檔會產生這樣的錯誤 ImportError: No module named resource 同時py2exe在產生時也有這樣的說明 [‘FCNTL’, ‘OpenSSL’, ’email.Generator’, ’email.Iterators’, ’email.Utils’, ‘pkg_resources’, ‘pywintypes’, ‘resource’, ‘win32api’, ‘win32con’, ‘win32event’, ‘win32file’, ‘win32pipe’, ‘win32process’, ‘win32security’] 終於,在好心人的幫助下,我的問題得到了回答 答覆 原因似乎是py2exe在某些原因下無法找到某些需要的module,此時就需要使用參數來指示py2exe包含這些module進來,在解決完了Twisted的問題,我又遇到了lxml類似的問題,不過所幸做法差不多,只是增加參數 -p 後面的一個lxml指示py2exe引入此package如此而已 python setup.py py2exe -p win32com,lxml -i twisted.web.resource 最後使用這樣的指令,成功地產生出了可執行的exe檔

Posted in Python, 中文文章 | Tagged , , , | 2 Comments

Python2.6 釋出

剛剛開啟Python官方文件時發現,變成了2.6版,連文件的格式都使用了不同的產生程式Sphinx,漂亮了許多 到官方網站的下載一看,果然已經釋放了2.6版,看來需要找些時間來了解Python2.6版到底新增了什麼

Posted in Python, 中文文章 | Tagged | 3 Comments

替代Plone的Python CMS列表

Plone真的是怪物 當收到來自WebFaction的回信後,更令人驚訝的事實 At this point, PHP applications are not counted towards your memory usage. If you look at the memory output in the notice, you will see that it’s just Zope (Plone). 原先我一直以為超過記憶體限制是因為PHP的關係,但是他們說PHP的記憶體使用並不列入計算,我回頭去看他們寄來的記錄上的確只有Plone的記憶體使用,所以驚人的事實就是 Zope + Plone吃掉了超過 171 MB的記憶體! 我並不清楚是何種情況讓Plone吃掉這麼多記憶體,在這之前都沒有超過記憶體的情況發生,但是這樣飢餓的怪物真叫人害怕 其它選擇 … Continue reading

Posted in Python, 中文文章 | Tagged , , , , | 3 Comments

Plone真是一隻怪物

不幸的消息 不幸的消息傳來了,我收到了主機商的通知,我的記憶體使用量超過了我購買的主機服務的限制,開這麼多東西早料到有可能會有這樣的事情發生,但其中最大的兇手就是Zope + Plone Plone吃掉了我的小朋友 原先選擇最便宜的專案,可是它會顯示因為Plone的記憶體使用量超過100MB,因此至少要更高一級的方案,於是就選了更高一級的方案,不過原本只是打算架Plone,後來只是順便架個Blog和phpBB,當初想說該不會超出記憶體使用量吧?果不其然 我討厭Plone 說真的我並不喜歡Plone,看它癡肥的模樣就讓我想起eclipse在我筆電上跑的情況,它有太多遺產從Zope一路繼承下來,甚至連資料庫都是獨樹一格的Zope Database,但是它功能強大卻是不可否認的,或許因為選擇不多,否擇我也不想使用Plone,又或著說,其實還有更好的CMF可以用,只是我沒找到而已 我一度曾試著想弄懂怎樣客制化Plone,可是我發現它底層實在有太多東西了,如果真的要了解,我得從底層開始研究起來,這會讓我抓狂,只想說誰來把Plone這頭怪物重新製造出一個輕量級的版本好嗎? 也該是重構的時候了吧? 解決方案 現在我必須向主機商WebFaction提出我的解決方案,他們推薦是升級主機方案 XD,當然,這的確是最簡單的方法,相對的要付出更多小朋友,說真的我一直很想找一個替代Plone這隻怪物的方案,如果能夠找到,再怎麼癡肥應該也不會有Plone癡肥,或是把討論區和部落格移到其它主機上,之前有人說過,小朋友不夠多養不起Plone,現在看起來的確是如此 囧rz 小朋友不足、請勿飼養Plone,Victor 關心您

Posted in 中文文章, 網站 | Tagged , , , | 1 Comment