2010年12月13日 星期一

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

因為有根筋不對,所以今年9月,我又重新取得"學生"的身份。唸的是身邊的人覺得我有點熟,但是我自己覺得應該是很不熟的資訊,或者應該稱之為"應用"資訊??

結果的結果,就是終於出現要"寫程式"的課。這..這....這........根本是我最大的夢靨。

打從我還小,看程式寫作一遇到開關檔案就再也看不下去了,不管是BASIC, pascal, C, 等等等。最後一次寫程式是在 CASIO 的可程式計算機上(如左),用BASIC寫一個猜數字的程式(就那個猜1A2B那種)。還記得那台計算機是我二姐夫送我的,而且只有一行顯示幕及8K的容量。電力由兩顆LR3032提供。另外還有一顆小電池維持記憶體功能,不在換電池時洗光所有的程式。


由於很小,沒什麼記憶體,所以沒什麼檔案輸出入的功能,雖然是BASIC programmable calculator,但是主要是用來輔助複雜的計算而已偶爾寫寫小小小的文字遊戲還可以。對了,後來好像移殖了一個猜英文單字的程式。不過,由於記憶體小,英文字的字庫也是小小小的,一下子就猜中了。後來,當然是玩到沒電,買電池,換電池。最後買不起電池就放棄它了。

不過,這次是完全不一樣的,老師的要求是做一個網路AGENT,做的工作是:

接收一個蛋白質字串
上某兩個指定網站,把剛剛那個字串送給它們
再等他們算出二級結構預測的結果
把兩個網站算出的結果排列好做比較。
哇咧。我放棄寫程式的年代好像還沒有網路。也就是說,我以前的BASIC根本無法勝任這個工作。啊我近年來又沒有修過程式語言,那,我搞屁呀。

還好就是,在我考上後,就開始再看程式語言了。這次挑的是Python。問我為什麼? 因為它是高階語言,Google有在用它,又有命令列模式,比較適合我這種上次學的是BASIC的人。

又很幸運的,剛好我在網路上有看到一個教學網站,它的 範例 剛好是類似的事,只是它是從YAHOO天氣上去抓資料,而我是要去另一個地方抓資料。如果可以的話,想辦法把資料送出去,然後照它的抄兩次,我要的資料就有了。然後再用字串變數來處理結果不就OK了。想到這兒,我覺得我的功課做完了。

當然,事情是不會這麼順利的。

第一個遭遇到的困難是,那些參數要怎麼丟給網站?在Firefox下研究了半天,原來他這個CGI是用POST,而不是GET來做的。那,程式要怎麼"POST"資料給網站呢?

後來是在這兒,他也問了類似的問題: How can I talk to UniProt over HTTP in Python?熱心助人的網友丙提供了不錯的SOLUTION,所以就....直接抄下來了呀。很好很好,果然好好利用,加上看過同學用JAVA寫好的SOURCE CODE,很快就知道要怎麼POST,而且要POST那些資料出去了。

第一步寫好了,接下來是要解析原來格式化的HTML。這時候開始抄這個 範例 。不過,這時候就慘了。有多慘,下次有空再來談吧。

4 則留言:

Laneser 提到...

話說我高中時有在這台 casio 上面寫過 RPG Game 耶 ...

打字蛙 提到...


只能說你太優了
這樣小的機器也可以寫RPG GAME。

話說
你用過這台,還高中時期
那你我不就是同時期的人??

blc 提到...

寫web-agent是很有趣的事,要用python解析html可以用beatuifulsoup,它會把網頁整個弄成巢狀的list,你只需要找出你要的變數在哪裡就好了。
以前靠wget+sed+grep抓漫畫網站,最痛苦的是要自己拆html和javascript…。

打字蛙 提到...

感謝樓上大大的意見
beatuifulsoup,這個我在google時也有找到這個。

不過,HTMLparser已經看下去了,就暫時繼續用下去。

有空再來研究beatuifulsoup了。