這一篇基本上我打算輕鬆一點介紹爬蟲就好,所以這一篇的篇幅或許會比以往前面少很多,主要也是讓大腦可以輕鬆一點。
簡單來講,網頁爬蟲(Web Crawler)是一種自動化的程式,可以在網路上搜尋並收集資料,並將資料儲存到本地端或是資料庫中。
網路爬蟲,又稱網路蜘蛛、螞蟻、自動索引器等,所以如果你看到人家說網路蜘蛛,其實也是在講網路爬蟲。
那麼為什麼需要爬蟲呢?因為有時候我們某些頁面並沒有提供 API,但是我們又想要取得資料,這時候就可以透過爬蟲來取得資料。
應該有點難懂吧?那我們來看一個例子,假設我們想要取得 是 Ray 不是 Array 的文章列表,但是由於它沒有提供 API 可以讓我們取得文章列表,這時候我們就可以透過爬蟲來取得文章列表。
那麼實際生活上爬蟲的案例有哪些呢?像是 Google、Yahoo!、Bing 等搜尋引擎,就是透過爬蟲來取得網頁資料,並且建立索引,讓使用者可以透過關鍵字來搜尋網頁。
當然搜尋引擎不是唯一的爬蟲案例,像是網路上的價格比較網站,也是透過爬蟲來取得商品資料,並且建立索引,讓使用者可以透過關鍵字來搜尋商品,這過程也包含了許多知識,例如演算法,我們該如何比對出最熱門的商品,符合使用者關鍵字的商品等等。
因此這邊簡單結論一下爬蟲可以有哪些用途:
...等等
但是這邊有件事情要提醒,爬蟲雖然很方便,我們可以透過爬蟲去爬取我們想要的資料,但你也必須注意你爬取的內容是否有授權,如果你的爬蟲是未經授權的方式,例如...
...等等
那麼就會有可能要負擔法律責任的風險,這也是人家常常在說的一件事情
「爬蟲爬得好,牢飯吃得飽。」
當然,有些網站會做爬蟲防禦,因為爬蟲會消耗網站的資源,因此你在實作的時候你會發現有些網站是無法爬取的,這時候你就必須要想辦法繞過爬蟲防禦,這也是爬蟲的一個挑戰。
那麼接下來我們就來聊一下爬蟲的流程,爬蟲的流程大致上可以分成三個步驟:
那我們該如何取得資料呢?其實爬蟲的行為跟你平常上網很像...
...等等
你會發現爬蟲的行為跟你平常上網的行為非常像,只是我們變成透過程式來執行這些行為,而不是透過人工來執行這些行為。
那麼我們該如何解析資料呢?這時候就要用到 HTML 的知識了,因為我們要透過 HTML 的標籤來解析資料,例如我們要取得文章列表,我們就必須要找到文章列表的標籤,然後透過標籤來取得文章列表的資料。
因此,如果你本身是一名前端工程師的話,我想你應該對 HTML 的標籤不陌生,因為我們在寫網頁的時候,就是透過 HTML 的標籤來建立網頁的結構,而爬蟲也是透過 HTML 的標籤來解析資料。
最後的「儲存資料」就比較簡單了,也就是將爬蟲爬回來並解析完畢的資料轉換成我們想要的格式,例如 JSON、CSV、XML 等等,接著再使用這些資料來做資料分析或是儲存到資料庫中,透過這些資料來做其他的事情。
當然,你也可以用爬蟲來寫出一些股票分析工具,搭配爬蟲來取得股票資料,然後再透過資料分析來分析股票的走勢,這也是爬蟲的一個應用。
所以其實爬蟲這個技巧是滿有趣的,只是你要知道哪些網站可以爬哪些不可爬。
「你這樣講我怎麼知道哪些網站可以爬哪些不可爬?」
基本上你要注意以下幾點:
以上幾點大概是你在實作爬蟲時需要注意的事情就是了。
因此爬蟲的概念在於,透過程式來模擬人類的行為,然後取得我們想要的資料,這也是為什麼爬蟲的流程跟你平常上網的行為很像了。
那麼這一篇就先到這邊,下一篇見囉~
前陣子朋友跑來跟我説
「ㄟㄟ,你文章都寫太長了啦!你這樣 30day 寫的出來哦!」
我:「那就只好發揮工程師的天賦了」
「什麼天賦?」
我:「肝硬化」