認識網路爬蟲:解放複製貼上的時間

分享給非程式背景的朋友,談談什麼是爬蟲,不提程式碼,只談概念與Python實作短片。


什麼是網路爬蟲

是一個可以自動化抓取網頁內容的程式。

相信大家多少都遇過需要抓取網頁資訊的時候,也許是因為要做報告、或是出於興趣想研究,需要相關參考資料。最簡單的方法就是一筆一筆複製,然後貼到excel或是文字編輯器儲存,再做後續的分析。

如果只有幾十筆還好,那假如有上百筆、上千筆怎麼辦?

重複的動作做個幾次,大致上就可以拆解出每個步驟:先進入到某個頁面、複製所需要的欄位資訊、貼入文字編輯器,接著不斷循環,直到所有頁面都被翻完,就大功告成啦。

是的,用講的都很輕鬆,一句話就結束了。

但如果實際下來做,在反覆機器式的複製貼上過程,到了某個境界後,只剩下眼球跟雙手飛快的動著,例行性的動作已經被肌肉記憶了,腦袋在喘息的空檔開始思考人生的意義(以及倒數還剩幾筆),相信每個經歷過的修行者都曾經想過:要是可以自動化該有多好?

爬蟲就是解決這個問題的好幫手。


抓取文字內容

假設我們想知道漫畫《神之塔》,google的搜尋結果有幾筆?動作會是:輸入關鍵字、送出查詢、得到搜尋結果頁、以及需要欄位。右邊黑黑的是我用的文字編輯器,在此並沒有什麼神奇功能,只是黑底看起來比較舒服。

其中,在「輸入關鍵字、送出查詢」後,我們會得到最重要的「搜尋結果頁的網址」,把這個網址交給爬蟲,它會把網頁原始碼抓下來,再依據我們給出的定位資訊,像漏斗一樣把結果篩選出來。左邊編輯器中,方塊內是我寫的功能,輸出結果在下面。

搜尋漫畫《蟲師》的結果筆數:

搜尋漫畫《蟲師》第一頁標題:

如果對網頁基礎陌生沒關係,舉個生活化例子:在一整天的工作忙碌後,你洗完澡窩在床上追劇,猛然想起幾天前買的豆漿不知道過期了沒,但是因為很懶不想動,想要請家人幫你確認。

關鍵對話會類似這樣:「可以幫我看一下冰箱裡,便利商店袋子中,豆漿的有效期限嗎?」

冰箱就是網站,便利商店袋子是你指定的網頁,袋子裡面的食物則是構成網頁的原始碼,而豆漿的有效期限就是明確的定位資訊。

沒錯~爬蟲就是使喚機器去做我們懶得去做的事情!歡迎來到這美好的世界。


捲動瀑布流網頁

一般網站翻頁的時後,可以看到網址列的page數字1、2、3的在變化,所以我們可以很明確的區隔與指定網頁的位置。但是有些網站,採用的是瀑布流方式,也就是當往下滾動到一個段落,才會讀取新的資訊,讓我們接著繼續瀏覽,網址毫無反應仍然是同一個。

舉個例子,如果我們想知道教學平台Hahow目前有哪些已開課程可以選修,我們可以讓爬蟲模擬瀏覽器的捲動操作,把畫面開完再取得需要的資訊:

對於需要一直往下捲捲捲的網頁,解決!

Hahow上有許多設計領域不錯的課程,有興趣可以看看我之前的插畫課程心得


抓取圖片、螢幕截圖

抓取單張圖片的方式,與前面提到的文字相同,同樣是定位抓取。而如果想要做長條型的全螢幕截圖、或是特定範圍的截圖,當然也沒問題!

以插畫交流網站pixiv為例,全螢幕截圖:

短片中,爬蟲先模擬瀏覽器開啟,讀取網站,螢幕截圖後存入指定資料夾,接著關閉瀏覽器。

而特定範圍截圖,則是用程式把截圖後、需要裁切的位置預先寫入進去。


讀檔、爬蟲、寫檔一氣呵成

那…可不可以拿到一份檔案後,丟給爬蟲,爬下來的資料簡單清理,例如只取整行文字的數字部分,接著把它寫入檔案,我只想按個按鈕、其他全部自動化。

當然沒問題,隨著我們撰寫程式的能力越好,爬蟲能做的事情就能越精細。就像玩遊戲,召喚師剛開始只能操縱一些小角色,等級提升後,後續召喚的都是些厲害的角色啊,只是要消耗的精神力也是倍數上升。

好比一開始,我們只寫得出單頁的爬蟲,丟網址進去可以得到一個結果;接著我們可能找到網址的規律,讓它自動翻頁,不用一筆筆輸入;再後來,我們直接指定區塊,不錯失新增的部分;最後可以加入篩選器,判斷怎樣的資料才要記錄、怎樣的可以略過,以及加入打瞌睡的功能避免造成網站負擔。

例如逐行讀取左邊檔案關鍵字「蟲師神之塔境界觸發者鋼之鍊金術師」這四本優質漫畫、交給爬蟲模擬瀏覽器送出查詢、右邊檔案紀錄結果:

要注意在右邊的檔案,除了開頭加上標題列,我把原始「約有 1,340,000 項結果」,只截取數字部分存入。


結語

現在,我們知道爬蟲可以做到:爬文字,並且篩選特定的範圍;爬圖片,單張及全(特定)範圍螢幕截圖。而在開始之前,可以準備檔案讓爬蟲逐行讀取;之後指定資料存取的位置,完成自動化。

對於重複的動作,程式能有效率的幫我們處理掉,釋出更多的時間用在其他工作上。如果開始對程式語言有興趣,我推薦從語法簡單的Python學起,因為也讓我折騰了好一段時間:我並不是工程師,只是個自學的上班族。

可以參考我整理的:Python新手免費學習資源Udemy與網頁設計課程推薦。爬蟲是個很好的切入點,除了理解簡單的程式邏輯外,還必須具備基礎的網頁知識,才可以順利完成任務。


如果想要進一步認識與延伸,可以參考我在臉書錄製的Python相關小短片,多瞭解些可能性,部分可以停格觀看程式碼:

網路爬蟲是什麼?:30秒,觀察爬取的資料如何定位。

爬蟲結合圖形介面:15秒,把純文字互動改成視窗化。

Hahow課程修課人數排序:23秒,取得資料後,放入excel用修課人數排序,了解熱門課程。

自然語言處理:斷詞:42秒,統計字詞出現頻率,丟到excel拉出長條圖。

判斷搜尋結果總頁數:10秒,用爬蟲去掃搜尋結果總共幾頁的概念。


下一篇Python爬蟲新手筆記,來理解爬蟲的概念!

假如沒有安裝Python,瀏覽器內的爬蟲初體驗也準備好了!

Pala

曾任電商Research Analyst,朝iOS Developer自學轉職中。紀錄過去兩年下班自學Python網頁設計Google Analytics分享;也推薦從架站、撰文到運營,首年12萬瀏覽的部落格心得;新文章是過去兩個月的iOS學習筆記