認識網路爬蟲
簡單來說,「網路爬蟲」是一個能夠收集資料的自動化程式,但為什麼網路爬蟲會這麼夯?不管是學術界或是企業都需要它呢?這篇文章能夠帶你了解什麼是網路爬蟲,有哪些應用以及你所需要知道有關網路爬蟲的事
什麼是網路爬蟲
「網路爬蟲」是一個透過程式「自動抓取」網站資料的過程,在這資訊爆炸的時代中,資料的收集是相當重要的工作項目之一,但如果透過人工的方式來收集網站資料,效率低之外也會花費掉非常多的時間
因此資料的收集與整理這份工作,可以透過網路爬蟲來協助,我們只要先制定好規則,網路爬蟲就可以自動依照這規則收集和擷取資料並整理出我們所需的格式,像是 Excel 試算表、CSV 檔案或是資料庫等
網路爬蟲的應用
搜尋引擎像是 Google、Bing 和 Yahoo 等應該是網絡爬蟲最成功的應用了,它們透過爬蟲在網際網路中收集優質的網站與內容,所以當用戶在搜尋引擎上搜尋關鍵字時,就能夠找出相關的網站資料
除了搜尋引擎的爬蟲,也有其他很多的應用,以下舉例幾個常見的用途
- 爬遍所有飯店與航空公司網站,輕鬆找出最划算的房間與機票
- 定期監測特定商品價格,當有降價時,即時通知價格
- 從股票資訊網站中獲取股價、月報、財報等用來追蹤股價趨勢
- 從基金網站中獲取所有基金資料,用來分析最優質的投資項目
- 每天自動下載各個財金新聞網站的標題與內容,快速掌握最新消息
- 批次下載 YouTube 播放清單影片
隨著網際網路的快速發展,各個網站內容已逐漸成為我們獲得資訊的主要管道之一,為了更有效率的獲取資訊,網路爬蟲的重要性將越來越高,因此只要正確的使用網路爬蟲工具,則效益是非常高的
如果你對網路爬蟲有更深入的興趣,想要系統性地學習 Python 爬蟲技術,我們推薦你參加我們的線上課程。在這裡,你將學習到更多實用的爬蟲技巧和最佳實踐,幫助你輕鬆應對各種爬蟲需求。 點擊這裡了解更多。
現在,讓我們看一下網路爬蟲的的原理,以便你可以了解在工作上或是生活中可以如何使用它
網路爬蟲的原理
正如我們之前所提的,網路爬蟲是透過程式自動從網站獲取資料的過程,最簡單的網路爬蟲程式主要是以下 3 個步驟
第1步 – 請求網頁內容
網路爬蟲進行的第一步驟都是向目標網站請求特定網址(URL)的內容
例如,透過網路爬蟲來抓取「Yahoo奇摩電影 – 本週新片」,爬蟲傳送一個 GET 請求至 https://movies.yahoo.com.tw/movie_thisweek.html 網址
Yahoo 奇摩的伺服器就會做出回應,將網頁的原始碼回傳,通常會是 HTML 文件,一般瀏覽器會將此 HTML 文件以圖文並茂的頁面來顯示(就會是上面所看到的樣子),而網路爬蟲取得 HTML 文件後,就會直接進入到第2步驟
第2步 – 抓取所需資料
Yahoo 奇摩的服務器返回應本週新片網頁的 HTML文件後,在此步驟,網路爬蟲主要是將 HTML 文件做「解析」並「取出」所需的資料,例如:我們希望抓取本週新片列表中的電影片名、英文片名、上映日期和期待度
所以在開發網路爬蟲程式時,我們將會需要明確地告訴它在 HTML 文件當中要抓取哪些資料
第3步 – 儲存資料
最後一步是將取出的資料儲存在 CSV 檔案、Excel 表或是資料庫當中,以便未來可以應用在其它的程式或是直接當作參考資料來使用
以上就是網路爬蟲最簡單的流程,這是一個簡化的流程,當然可以再加上反爬蟲機制的應對以及如何爬多個分頁的資料等,讓爬蟲的功能更強大,但基本上,每個網路爬蟲都將依照這個基礎流程來變化
在繼續之前,我想先說明一件事情
「網路爬蟲」與「網頁抓取」的差異
網路爬蟲包含了兩個分類,分別是「網路爬蟲 web crawler」和「網頁抓取 web scraper」,但我們習慣使用「網路爬蟲」為統稱,雖然網路爬蟲和網頁抓取的終旨一樣是抓取網際網路中的資料,但其實它們的運作方式略有不同之處
網路爬蟲(web crawler)
有時也稱為網路蜘蛛(spider),是一種自動網路機器人,其主要的目的是為建立索引並蒐索內容,像是 Google、Bing 和 Yahoo 等搜索引擎透過網路爬蟲將抓到的資料儲存下來,以便事後生成索引供用戶搜尋
網頁抓取(web scraper)
是一種從特定網頁上抓取頁面內容,然後將這些資料存儲至 Excel 試算表、CSV 檔案或是資料庫等,以供其它用途的過程,一般我們提到的網路爬蟲,事實上指的是這網頁抓取(web scraper)這一類
當網路爬蟲工具和網頁抓取工具結合在一起時,會非常的強大,可以抓取整個網站(或整個網際網路),以找到所需的資料。首先透過網路爬蟲發現新資料,然後網頁抓取將內容解析並存儲數據,然後繼續重複此流程,直到整個網站內容都抓取完成
網路爬蟲是否合法?
可以直接透過網路爬蟲每天自動到別人的網站中抓取內容?這時你腦海裡可能會出現一個問題,這樣可以嗎?
就其本身而言,網路爬蟲和網頁抓取並不違法,像是 Google 搜尋引擎就是最好的例子,我們平日可以在 Google 上搜尋到資料,也是 Google 透過網路爬蟲來搜集來的
但還是要取決於如何抓取以及怎麼使用抓取到的資料,如果你過度使用網路爬蟲造成別人服務器很大的負擔,或者你透過爬蟲搭配駭客技術來攻擊網站,那麼也可能會因此違法,所以要當一個「有禮貌」的爬蟲
如何當一個有禮貌的爬蟲呢?
1. 遵守 robots.txt 的規範
要確保爬蟲遵守 robox.txt 文件中定義的規範,此文件通常會在網站的根目錄中(www.example.com/robots.txt),它會說明爬蟲應該或是不應該爬的網站內容,例如在 Yahoo 奇摩電影的 robots.txt 中提到不限任何 User-agent,以及沒有限制哪些頁面不能爬取
2. 不造成網站伺服器的負擔
如果當網站負載過高至伺服器可以處理的上限時,就有可能無法在回應任何請求了,所以要當一個有禮貌的爬蟲,就要確保不會造成伺服器太大的影響,所以需要在多次的請求之間加入適當的等待延遲
3. 加入聯繫方式
如果在抓取資料的過程中不小心忽略掉某些規範或是造成網站太大的負擔等情況時,則要有讓網站伺服器管理者可以聯繫到你的方法,可以在 User-agent 標頭中加入公司名稱或電子信箱等資訊
4. 確認網站是否有提供 API
目前有許多網站都提供 API,以便讓第三方直接取得資料,所以在開發網路爬蟲前,可以先確認網站是否已經提供 API,如果有的話,我們就可以直接使用 API,這樣就不用再去研究網站的 HTML 結構了
如何開發網路爬蟲程式?
在以前,如果要開發網路爬蟲程式,就需要從頭開始自己寫,但現在已經有很多的工具與套件可以直接使用,就能夠快速的開發適合自己需求的網路爬蟲工具
像是 Python 之所以是最適合寫爬蟲的程式語言,除了寫法更簡潔之外,還可以直接使用別人開發好的套件,像是 BeautifulSoup (是一個用於解析網頁的 Python 套件,能夠幫助我們解析 HTML 網頁並擷取出所需的資料)或是 Selenium(能夠幫助我們抓取由 Javascript 產生的動態網頁的內容),只需要有些 Python 程式語言的基礎,透過實作範例練習,要能夠開發出網路爬蟲工具,比起以前是相當容易的
可以看看我們有關網路爬蟲的主題實作,也可以訂閱我們,當推出新的文章時,我們將會把第一首消息通知給你,如果你有其他問題,或是想要我們推出什麼樣的爬蟲實作,可以直接寄信至 webscrapingpro.tw@gmail.com 聯絡我們喔
全方位 Python 課程
無論你是初學者還是有經驗的開發者,這裡的課程都能滿足你的需求。精心設計的8堂課程,涵蓋不同類型的Python主題,幫助你在各個領域中脫穎而出。