如何入門網路爬蟲?7種Python網路爬蟲自學資源大推薦!

文章最後更新於 2020-07-12

__CONFIG_colors_palette__{"active_palette":0,"config":{"colors":{"25105":{"name":"Main Accent Light","parent":"fdf67","lock":{"lightness":1}},"fdf67":{"name":"Main Accent","parent":-1}},"gradients":[]},"palettes":[{"name":"Default","value":{"colors":{"25105":{"val":"rgba(4, 215, 85, 0.08)","hsl_parent_dependency":{"h":183,"l":0.42,"s":0.45}},"fdf67":{"val":"var(--tcb-skin-color-0)"}},"gradients":[]},"original":{"colors":{"25105":{"val":"rgba(4, 215, 85, 0.08)","hsl_parent_dependency":{"h":143,"s":0.96,"l":0.42}},"fdf67":{"val":"rgb(30, 136, 69)","hsl":{"h":142,"s":0.63,"l":0.32}}},"gradients":[]}}]}__CONFIG_colors_palette__

在過去,發現有複製貼上這個功能的時候,心想:「哇!這也太方便,我就不用一個一個字打,或按右鍵存檔了!」

隨著網路普及,資料量隨之迅速成長,也是我們後來常聽到的:資訊爆炸

雖然資料量大幅度成長,不斷填補我們對資訊的渴望,但同時也帶來問題:如何從中取得你需要的資料?

你是否曾經面臨過,為了要取得大量圖片、文字,卻只有「一個一個」複製貼上或另存新檔的方法嗎?

或者,針對某特定的資料,卻需要另外編輯把不必要的資料剔掉,並整理成一份新檔案。

你知道嗎?這樣的方法已經大把偷走你的時間和效率了!

那我該如何解決這個問題呢?找網路爬蟲!

關於網路爬蟲


網路爬蟲

進行網路爬蟲前提下,你需要會寫程式,才有辦法真的把特定資料抓下來。

如果不會寫程式,也沒關係,這部分我會一併在推薦資源的主題裡討論!

什麼是網路爬蟲?

我第一次聽到網路爬蟲的時候,根本一頭霧水。

腦袋一直想說是網路昆蟲嗎?網路有蟲?等等?它是病毒嗎?

別緊張,先線上百科全書(維基百科)對於網路爬蟲的解釋來看:

網路爬蟲(英語:web crawler),是一種用來自動瀏覽全球資訊網的網路機器人。

資料來源:網路爬蟲

也就是說,網路爬蟲會「自動」幫你把你想要的資訊抓下來。

先舉1個你超級熟悉的例子,搜尋引擎大神的Google、Yahoo搜尋引擎等等,他們就是運用網路爬蟲方式。

你輸入關鍵字,接著搜尋結果就會出現符合關鍵字的各種網站。

而搜尋結果之所以能夠產生,靠網路爬蟲做到的!

接下來你就會想,網路爬蟲跟爬蟲類有什麼關係?

的確,跟真的昆蟲類沒什麼太大關係,這只是比喻罷了。

不過,我會說它比喻得很真確!

分解 網路web爬蟲crawler 來看:

你有想過,每次看到的網頁,他們都是怎麼運作的嗎?

網路爬蟲

因為涉及層面頗廣,所以簡單畫個大概。

總之,你要看一個網頁,需要先送出請求,請對方把資料回傳過來,接著你就能看到你想要看的網頁了!

世界有成千上萬的人,脫離不了網路世界,大部分需要查資料、看某網站、影片等等,我們把上面講到的程序,假設再複製千萬個,放在一起就像是形成大型蜘蛛網(web)。

再來當我想要在網路上抓某特定資料,我要做的事情是派出我打好的程式碼,在錯綜複雜網路線中把資料抓回來。

像這樣的程式碼:

import requests
from bs4 import BeautifulSoup

url = 'https://www.ettoday.net/news/news-list.htm'
r = requests.get(url)

soup = BeautifulSoup(r.text, 'html5lib')
for d in soup.find(class_ = 'part_list_2').find_all('h3'):
# print(d.find(class_ = 'date').text, d.find_all('a')[-1].text)
print(d.find(class_ = 'date').text, d.find('a').text)

程式碼就像蜘蛛一樣,在大型蜘蛛網爬來爬去,因此除了爬蟲這個名詞,它也被稱作「網路蜘蛛(spider)」。

網路爬蟲可以應用到哪裡?

相較於搜尋引擎如:Google來說,我們做的網路爬蟲,只是想在某一網頁或網站,抓取比較特定、部分的資料。

其實網路爬蟲應用性很廣,這要取決於:

你想要什麼樣的資料,以及做什麼樣的運用!

舉例來說:我想找台北醫院的工作,可是搜尋結果已經超過100筆。

這時候,你只需要做的事情:派出寫好的網路爬蟲程式碼,一次把你想看的資料抓下來,再也不用一個一個點開看了!

當然也不限於找工作的領域,也可以應用到新聞或論壇,以了解輿情或風向、過往股價資訊、數據分析、機器學習等等。

看起來應用性很廣,這樣就可以到處「爬爬走」嗎?

不不不! 你要記得2件事:

  1. 當一個「禮貌爬蟲」
    一般來說,我們瀏覽網站,其實只有送出少量請求;而網路爬蟲他可以同時大量連線送出請求,小型伺服器真的會負荷不了,直接當機給你看!(網站擁有者會很頭大!)

    這樣你爬不了,連別人都無法瀏覽網頁,讓他們可能錯過重要的資訊。

    因此很多爬蟲教學課程,會教你要設定`time.sleep`間隔,不讓該網站伺服器一下負荷太大。
  2. 為什麼要取資料?
    網路爬蟲雖然讓你取得資料更方便,但請不要為了方便而取得全部資料!你之所以要網路爬蟲,是因為你要的是某特定資料

學網路爬蟲之前,我必須要會什麼?

基本上要會程式語言,如:Python、Java、C/C++等等,目前比較常聽到的是以Python最為常用的語言去執行網路爬蟲。

我自己是用Python,是因為它比較好上手,也符合自身需求(有應用到機器學習這一塊)。

若對Python自學有興趣的話,可以參考這一篇:8種Python自學資源推薦,「非」工程背景也能輕鬆學!

同時,如果會網頁開發程式語言的HTML會更好,這樣寫程式的時候,知道該抓哪個結構裡面的資料。

延伸閱讀:3週就能學好網頁全端開發基本功?找ALPHA Camp就對了!

如果你完全沒有接觸過任何程式語言,也不用太擔心。

目前在網路上有不少Python結合網路爬蟲的線上課程,這也是我會在下一個主題提到的一部分。

若是已經有Python或其他語言程式基礎,那你只要上網路爬蟲課程就可以了!

延伸閱讀:Python網路爬蟲簡介

網路爬蟲線上資源推薦


網路爬蟲

這邊講的線上資源包括免費的教學影片以及付費的線上課程為主。

我之所以會推線上資源,是因為自己沒有上過實體課,所以無從推薦。

另外,線上課程有個好處是:幾乎終身使用、有討論區等等。

本身是以Python程式語言去學網路爬蟲的,所以下面介紹到的資源以Python為主的教學。

下面介紹到的資源,會以程式經驗與否分別推薦線上資源,你再針對自身需求去選擇即可。

已有程式基礎者-免費資源

3.5

大數軟體有限公司網路爬蟲教學

第一次接觸網路爬蟲,是透過這間公司在Youtube上發布的網路爬蟲教學影片。

不過分類不清楚,對於初學者來說可能會不知道要學什麼。

若要從這邊開始學習的話,我會建議先看它影片標題寫的爬蟲實戰、再去看Selenium、接著看Scrapy(如果有興趣的話)。

  • 為目前最多的中文版免費網路爬蟲教學影片
  • 有應用教學:財經爬蟲
  • 除了基礎版的網路爬蟲教學,也有進階版教學
  • 分類不清楚(會讓初學者茫然無措)
  3

莫煩-網頁爬蟲教程系列

很適合來當試水溫,可以學到基礎的爬蟲技能。

但若要再學更進階,可能要找上面的免費資源或是付費資源比較合適!

  • 適合當水溫
  • 可以學到基礎的爬蟲技能
  • 無進階教學
  • 影片少

已有程式基礎者-付費課程

4.5

Python 網路爬蟲實戰研習馬拉松

有別於一般線上課程,此為「翻轉式教學」。

教學模式是以文字、圖片、程式碼範例並提供延伸閱讀為主。

每天幾乎會有作業,藉此可以累積實戰經驗!

另外,它是採進度制:每週慢慢釋放適合當週進度的教材,全部完成需1~2個月。

雖然馬拉松看起來很高壓,但是你可以自己安排學習進度,不一定要每天都去看教材跟寫作業。

  • 課程架構完整,基礎、進階方式都可以學好學滿!
  • 適合按部就班完成者
  • 可以累積超多實戰經驗
  • 有專屬討論區,可以發問
  • 有完賽證明,幫履歷加分!
  • 開課時間、招收人數有限定
  • 不適合想要手把手教學者
  • 不適合速成學習者

ps. 上課小心得:

我是參加他們的第一屆,也成功完賽!不得不說,學得有夠扎實!XD

 4

Python 網頁爬蟲入門實戰

如果想要有手把手教學的話,這門線上課程可以考慮!

它會教你如何設定環境、安裝各種套件到寫程式、擷取資料等等。

  • 手把手教學
  • 教學仔細,容易理解
  • 課程架構大致完整(基本)
  • 教學內容偏基本(但以入門來說,夠用了!)
  • 實戰累積比馬拉松少,換言之,你要自己多操作練習!

無程式基礎者-付費課程

建議找一次Python程式語言跟網路爬蟲學起來的課程,省去個別找Python跟網路爬蟲的學習資源時間跟金錢。


 4

Python基礎課程和網路爬蟲

入門實戰

課程分配上看來是Python基礎教學佔得比例較重,網路爬蟲教學內容,相較於有程式基礎推薦的課程來說會比較少,不過基礎的都有教到。

若以完全未接觸程式語言的初學者來說,一次學Python跟網路爬蟲,這樣分配剛剛好,壓力也不會那麼大!(以自身經驗來說XD)


  • 手把手教學
  • 提供字幕:聽到專有名詞,不怕聽得霧煞煞
  • 無任何贅詞或語助詞
  • 放大局部特寫或標記紅框以表示說明位置
  • 程式碼講解清楚
  • 網路爬蟲教學比例較少
 4

初入 Python 的資料網路爬蟲實戰

在線上課程裡面,可以說是CP值很高的課程,一次把Python語言程式、網路爬蟲,學好學滿!

完成這門課毅力要夠大,因為內容真的超級多!

  • 手把手教學
  • 課程架構完整
  • 課程內容豐富
  • 課程架構大致完整
  • 講者音量不穩、語速較快
  • 沒有字幕
  • 打程式的頁面沒有放大

常見問題


我該選免費還是付費?

我們透過上面的資源推薦,可以知道說免費跟付費課程架構還是有所區別的。

付費的課程可以讓你省下整合各種學習資源的時間,在最短時間學到新的技能,並持續運用它。

更重要的是,付費課程幾乎都有課程支援,所以不用太擔心碰到問題而無人詢問的窘境。

其實,與其討論要不要付費購買線上課程,我覺得應該要問你自己:「我願意花多少時間來學網路爬蟲?」

這樣問的話,我想你心底應該有答案了!

線上課程跟網路爬蟲實戰馬拉松選哪個?

這部分是針對有程式基礎者回答的。

以我想法來說,如果你是想要讓自己快速進步、累積超多實戰經驗,我會推薦Python 網路爬蟲實戰研習馬拉松!

若是你偏好有手把手教學的話,那我會建議直接去上付費或免費線上課程。

不管你選哪一個,你一定都會學到東西!

而這兩者該如何選,要取決於你自己的學習方式,這一點很重要!

想找免費Python教學結合網路爬蟲的課程?

目前看來是沒有一套這樣的免費課程,不過你可以先嘗試自學Python語言程式。
延伸閱讀:8種Python自學資源推薦,「非」工程背景也能輕鬆學!

學會Python基礎語法之後,你再從我上面推薦的有程式基礎者的免費資源慢慢學,自己再延伸摸索更多比較進階的教學資源。

雖然學習過程會比較慢,但只要肯學,你最終還是會學起來的!

總結


學會網路爬蟲,真的可以省去你一個個複製貼上、另存新檔的時間,還可以應用到不同的領域。

以我為例,我曾經嘗試用網路爬蟲方式直接抓取論文列表,省去我特地上網搜尋關鍵字,然後一篇一篇看。

其實接觸網路爬蟲一段時間之後,你會發現要寫的程式碼也就那些而已,剩下就是看你怎麼分析網頁,以及你想要什麼樣的資訊!

目前網路有不少爬蟲教學,但對於想要入門、非工程的人來說,可能學得比較吃力(對,就是我!)。

若是想要快速入門網路爬蟲,除了要找有良好的教學架構之外,還要多實際操作,這樣才會鞏固習得的新技能。

希望你不只學會Python的同時,也學會了網路爬蟲,讓自己技能更上一層樓,親自將許多事情變得能夠自動化、更有效率!

延伸閱讀:

Icons來源:


Icons made by phatplus from www.flaticon.com
Ícones feitos por prettycons from www.flaticon.com
Icons made by Freepik from www.flaticon.com

其他人正在看:

你是誰三面向 cover

只要 3 個面向,實際操作帶你跳脫迷惘迴圈,更認識自己!

alpha camp

3週就能學好網頁全端開發基本功?找ALPHA Camp就對了!

PMI思考法 cover

與其糾結現在的問題,不如花3分鐘用PMI思考法「改寫」問題!

Tammy


自身背景與醫學領域相關,對生活/科技輔具有興趣。


目前正在自學程式、行銷,想結合醫學或其他領域來解決問題。

  • 其實有一點程式的底子真的可以省去很多麻煩哈哈哈
    重複性高的工作大部分都能解決~
    版主介紹的非常仔細 !
    感謝細心的整理分享喔

  • 常常聽到網路爬蟲,但是大概有一點概念,也不是非常的理解,感謝版主分享詳細內容! 再來好好了解一下課程!

  • 版主介紹Python的很詳盡呦,之前有使用過Python想用來搶球鞋,可惜做到一半就無解了,看到版主這篇文章,才明白原來我當初應該先上個課,才能搶到球鞋,哈哈,感謝版主分享

  • 原來網路爬蟲來能這樣用啊!
    非程式語言本科系的我,感覺現在這種時代,好像不學也不行呢><

  • 超專業分享👍
    之前聽過網路爬蟲一頭霧水
    看了這篇有點基本概念了
    Python是個值得學習的好工具

  • Python 確實是一個挺好入門的語言,並且可以廣泛應用並整合各種不同資料,如相當熱門的人工智慧。
    爬蟲也是一個相當有意思的應用,以前也有透過爬蟲得到火車時刻表之類的功能,不用再透過台鐵的介面去查詢。版主整理的內容很完整,很適合想要想要精進或自學程式的人。

  • 這篇文章讓我對網路爬蟲有更深入的了解,一開始我還以為是某種蟲類XD這篇解釋得很簡單易懂~還有附上教學課程~對於需要學習的人來說方便很多~

  • 原先對於網路爬蟲的印象只有停留在google搜尋的部分
    不知道原來有這麼多功用!
    可以來好好研究課程的部分
    謝謝版主的細心分享。

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
    >
    輔具清單

     不知道生活輔具從何找起?