2016年4月22日 星期五

MahoMangaDownloader開發過程

因為有網友來信詢問下載器的開發過程,回覆他後想說也把相關經驗放上來,給大家做個參考:

寫程式流程大概如下:

1.先用瀏覽器到該漫畫網站,按F12進入開發者模式看他的html碼,看我真正想要的資源網址在哪裡。

2.寫程式去下載該網站的html碼(有時需要多跑js),寫個regular expression讓程式去把我真正要的資源網址正確parse下來。

3.得到正確的資源網址後,下載該資源網站的html,再寫另一組對應的regular expression,取得真正的圖片位址。

4.讓程式下載該圖片,結束。


至於如何訪問網站,以C#來說有很多類別可直接使用(webrowser,webclient,webrequest), webrowser算是最上層的類別(就是整個瀏覽器類別,你使用他就像在使用瀏覽器),webrequest則是最底層的類別,你使用他就是一次送一個封包。

我剛開始做這個的時候,是使用webrowser,直接像是在操控瀏覽器,幫助我獲取資源位址。可是缺點就是慢,不穩定,事件的判斷不精準,所以只有一開始的8comic我使用webrowser去幫我載,之後支援的網站(99,紳士網&EX)都是用webrequest送真正需要的封包。

如果你真的開始接觸,會發現很多問題真的只能遇到在處理,因為很多漫畫網站會做些阻礙機制,避免你用程式而不是瀏覽器去訪問他的網站,像是真正的資源網址用JS藏起來,網站要二次跳轉才會到真正的頁面,放一堆跟資源網址很像的假網址等等...這些都只能遇到在克服。





開發歷程:

其實我之前碰程式也幾乎都是在寫作業而已,完全沒做過這樣實用的工具...(大學修C++課程,C#自學,以前反而花比較多時間在8051跟PIC上...)。只是考完研究所等入學很閒,就想做這東西出來,就開始一直摸一直摸,真的是從什麼都不懂靠google一點一點拼出來,以過程來說:

第1~2天->終於會用webrowser瀏覽網站,下載資源了。
3~4天->學習regular expression,讓程式幫我parse真正要的資源地址。
5~6天->一整個簡單下載流程都順利work,開始用 windows form拉GUI套件做整個視窗程式。

之後-> 微調,debug,增加支援網站,遭遇各種不同問題,想辦法解決,增加功能....


我真正大概花了兩個禮拜的時間(全天,不過大多數時間都在google找方法,解決問題)寫完最初步的下載器(支援8comic,99comic),之後才陸續增加紳士,EX紳士網,然後又是一段Google學習之旅(看懂cookie,改header等等)。


要是沒有熱忱,沒有投入進去,我應該也做不出來,因為在這之前我連C#有webrowser類別,webrequest是什麼都不知道(我高中&大學念電子,對資工東西沒很熟...雖然現在也是囧),只能說真的有心的時候什麼都做得到,期望自己接下來能趕快找到下一個能投入的事哪..!!


希望以上這些經驗能對大家有幫助~!!



最後抒發一下,目前跟BOSS談好,看能不能盡量趕在9月讓我畢業,雖然已獲得許可寫自己碩論了,可是還是得幫BOSS做事,充實現在的paper內容並發出去才行...。

目前給自己的規劃是:6月完成初步碩論,7~8月準備作品集,充實履歷找工作,9月畢業!!
當然這段時間,也得並行的幫老師把paper發出去,希望一切順利啦!!

zmcx16

沒有留言:

張貼留言