# 【Day1】技術只能陪你一陣子，學會解決問題才能過一輩子

- 作者：林鼎淵（Dean Lin）
- 網址：https://deanlin.net/blog/202009/fb-ig-crawler-day-01/
- 發布：2020-09-16
- 主題：技術教學
- 系列：FB & IG 爬蟲專案從零開始
- 標籤：iT 邦幫忙鐵人賽、網頁爬蟲、Selenium、google-sheets、Node.js
- 摘要：因朋友職業需求需要搜集與公司同類型品牌FB及IG粉專的資料，用每日追蹤人數的變化及貼文數量來做數據分析，像是：

> 你不用很厲害才開始，你要開始了才會很厲害！

## 為什麼選擇這個題目？

因朋友職業需求需要搜集與公司同類型品牌FB及IG粉專的資料，用每日追蹤人數的變化及貼文數量來做數據分析，像是：

1. 觀察發文頻率是否與紛絲成長數量成正比
2. 某個粉專突然因為某篇貼文而紛絲爆量成長

有這些數據後方便研擬各項策略，但需要追蹤的FB跟IG品牌頁面加起來超過 200 個(真的狂，這是現實案例)，如果靠手指一個一個點開，複製貼上到 excel，這個機械式的動作重複兩百多次我想想都很崩潰，於是他便向我詢問是否有辦法讓這些步驟自動化

## 這三十天我能學到什麼？

說點喪志的話，無論我分享什麼技術，他遲早會被這個世界淘汰

**所以我認為與其透過文章讓你掌握技術，不如透過技術培養解決問題的邏輯**

這系列文章是透過一個真實外包案例，從零開始逐步分析如何完成它

### 文章大綱

1. **開發前環境設定** 【[day2](https://deanlin.net/blog/202009/fb-ig-crawler-day-02/)】

2. 教你安裝本專案所需要的開發工具，確保能完成日後的實作

3. **寫程式所需的基礎常識(Node.js)** 【[day3](https://deanlin.net/blog/202009/fb-ig-crawler-day-03/)~[day7](https://deanlin.net/blog/202009/fb-ig-crawler-day-07/)】

4. 如何撰寫不被同事嫌棄的程式
5. 喚醒開發過程中被忽略的小技巧提升工作效率
6. 結合經驗與專案實務，讓你了解沒常識有多可怕

7. **爬蟲抓取網頁資訊(selenium)** 【[day8](https://deanlin.net/blog/202009/fb-ig-crawler-day-08/)~[day16](https://deanlin.net/blog/202010/fb-ig-crawler-day-16/)】

8. 理解為什麼挑選這個工具
9. 網頁結構的分析技巧
10. 完成需求後，程式重構與錯誤處理的重要性

11. **將取得的資訊儲存(Google Sheets)** 【[day17](https://deanlin.net/blog/202010/fb-ig-crawler-day-17/)~[day23](https://deanlin.net/blog/202010/fb-ig-crawler-day-23/)】

12. 思考符合客戶需求的資訊載體
13. 學會閱讀官方的文件
14. 處理匯入爬蟲資料遇到的問題
15. 在專案發生bug、有新功能需求時與客戶溝通的技巧

16. **設定排程自動執行** 【[day24](https://deanlin.net/blog/202010/fb-ig-crawler-day-24/)~[day26](https://deanlin.net/blog/202010/fb-ig-crawler-day-26/)】

17. 有時一個工具不足以完成需求，培養將多種工具串連解決問題的能力

18. **排程完成後透過LINE回報執行狀況** 【[day27](https://deanlin.net/blog/202010/fb-ig-crawler-day-27/)~[day29](https://deanlin.net/blog/202010/fb-ig-crawler-day-29/)】

19. 了解使用 api 前先用第三方程式測試的重要性
20. 重構程式將專案爬蟲的訊息整合，透過 LINE 回傳當日爬蟲狀況

> 文章的內容著重於**思考**
> 我所提供的**答案只是僅供參考**
> 一道題目解決的方法肯定不只一種，對於工程師而言最珍貴的是**思考的過程**
> 直接看答案會限制你的思維
> 有了思考的過程你會給出一個更棒的解決方法

## 題目分析

- **專案目標：** 透過爬蟲拯救一個沈淪在FB、IG分析報表的小編

- **使用工具：** 只要能把他從每天重複的動作中拯救出來就好，不管你用什麼工具

- **外包預算：** 友情無價，外包有價

> 如果有朋友間的外包，**我強烈建議一定要收錢**，你的收費可以遠低於市場報價，但絕對要收錢，如果你不收錢，有超高機率鬧得雙方不愉快
> 並且你在**做功能前要先報價，確定對方可以接受後再開始實做**
> 技術是有價值的，你有收錢，你會給自己時間壓力；對方有付錢，會認真地使用你做出來的產品並給予回饋
> 這樣才是正向循環
> 我看過太多朋友間免費的專案，到最後不是胎死腹中就是爛尾，所以請報價吧，對雙方都好

- **專案期限**:
越快越好

## 需求規格

我想很多工程師都遇過親朋好友委託專案，而他們給需求時通常都是很不具體的，你也不可能要他們寫需求規格書

所以我建議你要自己研擬一份簡易的需求規格書，並說明一些但書以免日後爭議

1. **FB**

2. 取得粉專追蹤人數
3. 取得當日貼文數
4. 頻率: 1次/天
5. 報表出來時間: 22:00

- **IG**

1. 取得粉專追蹤人數
2. 取得當日貼文數
3. 頻率: 1次/天
4. 報表出來時間: 22:00

- **報表呈現**

1. excel格式
2. 標題點進去可以直接連結粉專
3. FB與IG粉專各自獨立分頁顯示
4. 爬蟲日期為欄，粉專標題為列
5. 首欄與首列需要凍結窗格，方便使用者操作(新增需求)
6. 插入日期為倒序插入，由近到遠(新增需求)

- **爬蟲完成通知**(新增需求)

1. 使用line進行通知(新增需求)
2. 通知包含：總掃描粉專數量、共費時間、Google Sheets連結、無法正常爬蟲頁面列表(新增需求)

- **專案執行位置**

1. 自己電腦

- **預計交期**

1. 請研擬一個自己絕對能做出來的時間，只能多不能少

- **功能報價**

1. 這個部分關係到你對工具的熟悉程度、程式執行的效率、程式的穩定性、功能項目多寡…，光這個估計都能完成鐵人30篇惹

- **備註**

1. 如果FB或IG的網頁結構上的更動導致無法用原先程式運行時需與工程師討論維護報價

## 實作的步驟

1. 使用什麼工具完成
2. 列出功能項目報價
3. 哪個功能項目需要最先研究
4. 如何讓對方能夠使用及測試功能
5. 結案與維護

以上是我接案之前就會先思考的問題，但**實際情況通常會比我列出這些步驟更為複雜**，各位讀者也可以想想看自己在遇到這些需求時會怎麼設計呢～

PS.技術沒有善惡，人的使用方式才會有善惡，希望這份技術可以幫大家節省時間以及避免重工；如果你把它拿來盜取智慧財產、個人檔案及機敏資訊請自行負擔後續法律責任

> 免責聲明:文章技術僅抓取公開數據作爲研究，任何組織和個人不得以此技術盜取他人智慧財產、造成網站損害，否則一切后果由該組織或個人承擔。作者不承擔任何法律及連帶責任！

感謝大家的閱讀，如果喜歡我的文章可以按Like支持一下喔，我們明天見

> **在許多人的幫助下，本系列文章已出版成書，並添加了新的篇章與細節補充：**
> 加入更多實務經驗，用完整的開發流程讓讀者了解專案每個階段要注意的事項
> 將爬蟲的步驟與技巧做更詳細的說明，讓讀者可以輕鬆入門
> 調整專案架構
> 優化爬蟲程式，以更廣的視角來擷取網頁資訊
> 增加資料驗證、錯誤通知等功能，讓爬蟲執行遇到問題時可以第一時間通知使用者
> 排程部分改用 node-schedule & pm2 的組合，讓讀者可以輕鬆管理專案程序並獲得更精確的 log 資訊
> **有興趣的朋友可以到天瓏書局選購，感謝大家的支持。**
> **購書連結**：[https://www.tenlong.com.tw/products/9789864348008](https://www.tenlong.com.tw/products/9789864348008)

---

關於作者：林鼎淵（Dean Lin），台灣的生成式 AI 企業內訓講師、外商資安公司軟體專家，也是生成式 AI 創新學院發起人。出版 7 本書（包含全台第一本 ChatGPT 應用專書），兩度獲得 iThome 鐵人賽佳作，累積上百場授課與顧問經驗。（https://deanlin.net/about/）
引用時請附上原文網址：https://deanlin.net/blog/202009/fb-ig-crawler-day-01/
