圖7
圖7
工作當中扮演的角色
焦榮安:
做完作業之後我們已經確認好主題,老師開始要我們分別去抓跟主題相關的網站資料,一開始面臨到的問題就是,每個網站的架構都不同,已經習慣爬PTT的我顯然有點不知所措,所以一開始花在重新摸索的時間蠻久的,然後我遇到的第二個問題就是爬到的網站跟主題比較沒有相關,因為我們要聚焦在”幼兒”的這個主題上,但我爬的網站主題都很散,所以我前兩三個禮拜都還在一直換要爬的網站,雖然進度落後大家一點,但我覺得並不是件壞事,因為可以從中去練習,增加我打程式的速度和debug的能力,這點是我在這學期學到最重要的能力,同時也很謝謝老師和同學的幫忙。順利在第四個禮拜找到適合我們專題的網站。
我要爬的網站是一個名叫”嬰兒與母親”的網站,我遇到比較困難的點是他們的架構比較鬆散和重複,所以在爬取時常常會遇到重複的資料,讓我非常頭疼,但我後來的解決辦法是利用if和else語法去判斷。另外遇到困難的地方還有一個,就是他們內文是有分頁的,因為這個網站是發佈的都是專業文章,所以篇幅通常都比較長,他們的網站架構就設計有分頁。
我解決的辦法是,有點像爬多頁的概念,假如該網站有”下一頁”的話就會把這一頁的內文和它下一頁的內文相加,然後我加上遞迴的技巧這樣抓到文章也不會顛倒或順序錯亂。
圖47
這樣就大致完成啦,另外這網站有很多類別,但我剛剛的作法只能完成一個類別的,所以老師建議我用手動的方式去記錄每個類別的網址,另外,我手動紀錄每個不同的類別的總頁數,讀檔時用程式去判斷,並存入名叫'abc.json'的JSON檔,這樣就很方便的完成這次網頁的全部爬取。
以下圖48是這次的成果,總共快四千筆資料以及他們的文章標題、該文的網址、內文、標籤、發文日期和作者。
圖48
黃榆程:
在實習專題的過程中,老師大多時候會引導我們去思考如何解決問題,而不是直接告訴我們怎麼解決,我覺這對於我們學習程式以及新的東西來說是很好的,這可以讓我們練習獨立思考與學習如何解決問題,無論是透過團隊或是個人。
在與老師開會當中,老師也會提出一些之前沒有很熟悉的領域或是哪些技術或格式是比較被大部分人所接受或較流行的,例如:Json格式,一開始老師事先要求我們把抓取到的資料輸出成我們較熟悉的Excel格式,老師後來要求我們都輸出成Json格式,Json就像之前學過的dictionary的格式相似每一組資料都有其key和value,我們也可從中了解並學習新的事物。
在練習爬蟲的過程中我嘗試在程式碼當中加入function來增加程式的可讀性一方面也能幫助程式撰寫的延續性,在很多方面我覺得自己寫的程式碼還有很多地方可以加強,再和其他組員討論問題或討論程式碼時,會從中發現其他人的優點,常常會有”原來這個功能也可以這樣寫”或會有一些對於程式碼的整體架構有布一樣的想法,我覺得這是很好的,將每個人的想法交流,可以從中發現自己的優缺點,自己不足的地方,透過溝通與討論也能從很多不一樣的觀點來看程式碼的架構。
鄭云瑄:
在這個專題研究中,我們是總共四個人一組,楊錦生老師讓我們四個人各自去練習以及實作抓取網站內容,直到現在都還是四個人分別去進行不同網站的爬蟲,各自有不同的研究內容和進度。
在程式設計方面,我們四個人使用的方法和語法都不太相同,彼此之間會互相詢問進度或是抓取網站方式的交流,共同目標是將抓到的資料用Json格式存放,以利之後的分析或是資料歸類所使用。
因為平常大家的作業環境沒有固定,因此在平日我們組內比較不會有遇到討論的時間,但是在與老師開會的當天下午,我們除了與老師報告與討論一周進度以外,也會彼此之間給予建議或是詢問其他人的做法,以得到更好抓取網站的方式、解決在抓網頁或是跑程式碼的時候遇到的瓶頸。
譬如說,在遇到類似的抓取網站錯誤、多層儲存Json格式的方法,我先前已經解決過的錯誤,我會跟同學討論或建議他可以怎麼做;在遇到程式大量抓取的問題時,我也會問有解決這個問題的同學,去釐清我應該可以怎麼做讓程式更好。
我認為同組的組員之間互相討論可以帶來不一樣的解決方法,每個人寫程式都會有自己的特色,在看組員報告的程式碼時,會看到與自己不一樣的做法,或自己沒想到的呈現方法,提供自己一點靈感。而同組之間互相幫助與討論也達到專題製作這門科目的學習重要目標之一:與他人討論溝通及團隊相處並在各自較擅長的領域發揮最大效益。
蒙宗凌:
在實習專題的過程中,老師是讓我們四個人分別下去去練習抓取網站內容,大多時候會用引導的方式去讓我們思考如何解決爬蟲遇到的問題,而不是直接告訴我們怎麼解決。我認為這樣是可以訓練我們再遇到問題的時候不是一味的去debug而是要先找出問題點在哪裡,然後才去一一解決問題,而不是只想著解決問題,根本不了解為什麼會發生這種error,不然以後還是會發生這種問題。
在跟老師開會的時候,老師都會大致瀏覽我們的程式碼,大概了解一下我們是如何去抓取這個網站,或是老師也會提出一些技術或格式是比較被大部分人所接受或可讀性高的方法。
因為我們目前是先分別去抓網站內容,所以較缺乏組內討論,但近期因為各自的網站很常會出現一些之前練習抓PTT不會出現的問題,例如:SSL Error或是網頁是動態的等等的,大部分會出現問題主要是因為我們目前開始抓取大量的資料的關係,所以可能在程式撰寫上要多注意一些小問題。