2010年12月16日 星期四

第一次寫程式作業,就"沒"上手(二)

上次有提到這那個forum(如下),談到如何和uniport(這是一個生物資訊學的網站,有關蛋白質結構),它如何把資料post出去。其實,後來也再找到一個Python Library Reference的網站,它就有明白的講如何用httplib, urllib來做GET及POST的動作。
PPT.cc縮圖服務 Python Library Reference
不過,這些都只教你要import urllib來post資料,至於如何抓資料,就沒有提了。

所以,我又去找,找到的下圖的網站,他本身是個python教學的網站,其中就有個例子,是要去截取中央氣象局的資料,而只抓取台中的氣溫、降雨機率等的資料。

HTMLParser的例子
這個網友他真的寫得很不錯,但是,我也實在是新手,完全沒辦法體會他在class中的那一段在寫什麼。即使是照抄,程式也只一直給我錯誤訊息。

我曾嘗試著不要弄成class,但是HTMLParser似乎只能放在class中呼叫。又試著印出相關的代數,但是卻一進到class就掛。回頭去看英文的資料,看半天還是不懂class是如何把資料丟進丟出的。寫到這兒,要推兩個使用手用級的網頁,一個是2.7.1的使用說明,一個是3.0.1的,(我們都知道,2.X版和3.X版在語言結構上不太一樣的),如下圖。
2.7.1英文線上手冊  3.0.1英文線上手冊

不過,想用其他比較簡單的方式,或是去使用別的parser,似乎都沒辦法像在HTMLParser這樣的有人寫好 handle_data 的部份給我抄。我只好再回去看使用手冊,其中有提到CLASS它所使用的function 及其 arguments 要怎麼用(如下圖)。只是,看完了還是看沒有 一一"
[Python] 傳遞 class、function 及其 arguments What do *args, **kw, **kwargs Mean?

這時只好 call out 向外求救了。朋友中,最熟 python 的兔大當兵去了,最近又沒放假。其他的人好像都不熟這個。想一想,有寫過 c++ 的至少對"物件導向"也比較熟,搞不好和我解釋一下、或是改一下就ok了。這時,我只好求助於我常去的聊天室中的空空大,並把我寫過的部份 + 氣象局的那個例子一起給他看。還好的是,他好像也裝過python,所以在幫我run過程式後,很快的幫我找到我的錯誤:第一,呼叫常數的方式不對;第二,呼叫class後沒做close。不過,還是只能在class中跑呀!

最後,再好好的看看別人氣象局的那個例子,噫,好像別人呼叫class中的常數時,是在做完close後?

所以,最後在這樣的改變之後,還真的把裏面的常數或字串傳出來了。
於是乎,其他的部份也co這一個方式,就解決一大半了。

沒有留言: