【14天解完新手村任務】我的爬蟲初心者心得


(圖片來源:wikimedia.org)

Hi,大家好,最近因為興趣使然,開始學習用 Python 寫爬蟲。前幾個禮拜,終於成功寫出一個爬蟲程式抓到所需的資料,也應用在工作上,縮短了每個月需耗費二十分鐘的工作事項。

Python 在網路上的學習資源非常多,其實不用太害怕自己沒有程式背景。先說說我的背景好了,我大學是讀醫務管理學系(跟程式沒半點關係),目前工作內容接觸到的是數位廣告投放、GA數據追蹤設定及分析,還有一些大大小小的專案企劃(還是跟程式沒半點關係)。連我都可以寫出簡單的爬蟲程式,相信許多人也都可以輕鬆辦到的XD

下面會分享這14天的學習歷程與心得,有興趣的人可以一起學習交流😁



一開始的胡亂自學法

決定開始學寫爬蟲後,我設定了一個目標,由於工作時需要做競品分析,執行過程中會有固定且重複性的動作,每次弄完都花了快 20 分鐘,於是我想,如果能用爬蟲解決這個問題,好像蠻爽的XD 當下我詢問了公司的工程師,確認這是可以做到的事情。下班回家我就開始找影片看該怎麼安裝 Python,建置開發環境、安裝編輯器。

一開始在什麼都不清楚的狀況下,原本打算用不求甚解的方式,找教學影片,直接學怎麼爬網站資料就好,於是我胡亂找網路資源學習。結果前兩天甚至還學了好幾堂 Django 課程,後來問公司工程師朋友才發現這是在寫 Web 的。

而後找到了大數軟體的網路爬蟲課程,一開始跟著影片實作,發現每個步驟都講解得非常詳細,可以照著每個步驟抓取網頁資料。像是剛學會用 requests 去抓到網頁的 Html 架構,當下覺得超爽的。不過緊接著就遇到一個問題:以我設定的目標,去抓競品的網頁資料時,我發現不知道該如何應用學到的東西,也開始對於怎麼學習有點迷茫。

從基礎打起:Data Camp 讀書會

而後我去找了幾個資種的朋友聊聊關於學習的方法、該從哪開始學習,聊了很多後,我覺得能繼續進步的方式是:找到一個可以直接請教的人,或是找幾個一起學習的夥伴。於是乎,我先去詢問了公司裡的工程師好友要不要一起學習;也跟主管討論過這件事,很幸運的是主管很願意提供書籍或課程的資源;當瞭解到有書籍跟課程的資源管道後,我便想說要不要以讀書會的方式進行,不過我不太了解程式方面的讀書會跟一般的讀書會有沒有什麼不同,剛好想到我們工程部門每個月都有工程讀書會,所以我就大膽地詢問總工程師小花,他們工程讀書會是怎麼進行的。

萬萬沒想到,聽到我想找學習夥伴,小花便跟我說:好啊,我可以跟你一起學,今天下班開始可以吧。當下覺得超級開心找到了學習夥伴,不,這根本是老師了哈哈。我們便開始尋找線上學習資源,後來決定用 Data Camp 來學習,他也告訴我從基本語法開始學,以後遇到問題可能比較知道怎麼查資料及解決。

於是我們便開始了每天下班後一個小時的 Data Camp 學習課程,看完一個課程段落,會先討論有沒有什麼不理解的地方,接下來就練習課程提供的小實作。結束後就訂了簡單的小作業:用 Pyhton 寫出計算機,隔天上課前簡單分享應用了上次課程的哪些元素,後來也寫了一些奇奇怪怪的計算機。

彼此都有空時就借用公司會議室看課程練習、如果有事或假日就各自看完課程,晚上用 Zoom 一起討論有沒有問題,於是我們用了五天晚上把 Data Camp 基礎課程完成。

開始實作練習:知識應用及想法交流

上完基礎課程後,我們就開始執行之前提及到的目標:去爬取競品網站上的資訊。一開始我其實不太知道該怎麼下手,小花有先將執行上大概的邏輯跟我說,並告訴我只要將之前學到的東西做應用就可以完成。

嘗試時覺得最困難的是,要怎麼把課堂上聽到的內容,真實轉化到實際的應用上,聽課時可能會覺得理解了,但在寫 code 時卻會想不出來要拿什麼東西來解決這個問題。小花也跟我分享了:查找資料的方式,在有基礎的概念下,怎麼去透過關鍵字來找到解決的方法。另一項困難的點是分辨變數、字串、還是整數,常常搞混就一直出現 error。小花也分享可以先透過命名的方式做分辨,比較不容易弄混自己。

我們每天會分享寫出來的程式碼,互相交流撰寫的邏輯,或者是發現了什麼有趣的套件,像是 Selenium、PhantomJS,也會分享怎麼寫會更精簡。這段時間真的蠻有趣的,互相交流想法的感覺真的很棒,也成功完成了所設定的目標。

學習的 3 元素:熱情、夥伴、分享

這次的學習過程中,我發現工作後的學習,成本比起當學生要來的大很多,無論是時間上或是精神上,可惜大學時太混了QQ 但我認為「熱情」非常重要,其實回去練習時我都是迫不及待的打開電腦開始研究(當學生有那麼認真就好了XD),有時太著迷還會忘記明天要上班,太晚爬上床睡覺。學習的熱情動力是驅動我的一大助力。

第二重要我覺得是「夥伴」,我很幸運,遇到的不只是學習夥伴,已經是老師等級了XD 不過因為學習、練習的過程有想法或問題都能拋到我們讀書會群組一起討論,或是以半競爭式的方式互相激勵,避免了一個人埋頭查資料、解不出問題的無助感。自己也開始有明顯的成長和進步。

最後一項重要元素,我覺得是「分享」,在學習的過程我們不藏私地分享自己寫出來的內容,思考的邏輯或是發現的新知。我認為,分享不會是單向的給予,其實在分享前,自己要先釐清脈絡、內化所學,才得以分享給夥伴,這個過程其實是雙向的成長。

我已經脫離新手村了嗎?不!我根本還不算學會哈哈。接下來要再繼續設定新的目標,再開始挑戰,如果有興趣歡迎一起交流學習😀


如果喜歡我的文章,想隨時收到最新行銷、技術分享,歡迎按 fb 粉專讚

加入好友  或加入 LINE 官方帳號,即時接收最新文章通知

留言

這個網誌中的熱門文章

2021 年 1 月熱門電子書推薦 | 精選書籍推薦

從無到有,Google Analytics (分析) 學習心得分享

CodeIgniter 查詢生成器 - update_batch 介紹