
0人評分過此書
JavaScript 爬蟲新思路!從零開始帶你用 Node.js 打造 FB&IG 爬蟲專案
本書內容改編自第12屆 iT 邦幫忙鐵人賽,AI&Data 組佳作網路系列文章──
《行銷廣告、電商小編的武器,FB & IG 爬蟲專案從零開始 》
你知道 JavaScript 不僅能寫網頁還能夠爬蟲嗎?
你受夠像機器人般蒐集資料的生活嗎?
從新手村畢業的朋友想知道一個專案是如何進行的嗎?
PM 們想知道工程師面對問題時在想什麼嗎?
想知道這些答案嗎?想知道的話可以全部都給你。
閱讀吧!我把所有的解答都放在書裡了!
【書籍特色】
從零開始!手把手建置 Mac/Windows 的專案環境
擋住學習熱情的不是困難的工具,而是屢戰屢敗的環境建置!
除了 step by step 帶你安裝環境,更讓你掌握每個工具的用途與原理。
循序漸進!每個章節都是一個里程碑
每個章節都有明確的學習目標,讓讀者在閱讀與實作的過程中成長;
並透過實務上的議題,培養獨立思考能力。
整合技術!完成屬於自己的爬蟲專案
從架構上全面著手,提供多種解決問題的思路,打造擴充性強大的系統。
透過需求訪談,你將發現──只有爬蟲技術是無法完善整個專案的!
儲存資料的容器、定時執行的排程與爬蟲完成後的通知都是不可或缺的一環。
Node.js x Selenium x Google Sheets x Schedule x LINE Notify
最後,習得爬蟲技能的你
1. 向機械化的操作 Say Goodbye ~
2. 蒐集海量資料不再是苦差事
3. 比別人擁有更多技能優勢
《行銷廣告、電商小編的武器,FB & IG 爬蟲專案從零開始 》
你知道 JavaScript 不僅能寫網頁還能夠爬蟲嗎?
你受夠像機器人般蒐集資料的生活嗎?
從新手村畢業的朋友想知道一個專案是如何進行的嗎?
PM 們想知道工程師面對問題時在想什麼嗎?
想知道這些答案嗎?想知道的話可以全部都給你。
閱讀吧!我把所有的解答都放在書裡了!
【書籍特色】
從零開始!手把手建置 Mac/Windows 的專案環境
擋住學習熱情的不是困難的工具,而是屢戰屢敗的環境建置!
除了 step by step 帶你安裝環境,更讓你掌握每個工具的用途與原理。
循序漸進!每個章節都是一個里程碑
每個章節都有明確的學習目標,讓讀者在閱讀與實作的過程中成長;
並透過實務上的議題,培養獨立思考能力。
整合技術!完成屬於自己的爬蟲專案
從架構上全面著手,提供多種解決問題的思路,打造擴充性強大的系統。
透過需求訪談,你將發現──只有爬蟲技術是無法完善整個專案的!
儲存資料的容器、定時執行的排程與爬蟲完成後的通知都是不可或缺的一環。
Node.js x Selenium x Google Sheets x Schedule x LINE Notify
最後,習得爬蟲技能的你
1. 向機械化的操作 Say Goodbye ~
2. 蒐集海量資料不再是苦差事
3. 比別人擁有更多技能優勢
-
PART 1 先了解專案需求,再思考如何實作
-
01 需求訪談
-
1.1 傾聽客戶的需求
-
1.2 向客戶推薦解決問題的方法
-
-
02 撰寫需求規格書
-
2.1 專案分析
-
2.2 需求規格
-
2.3 新手接案的注意事項
-
2.4 如何避免接案後無法完成功能交付的困境
-
-
-
PART 2 開發前環境介紹& 設定
-
03 開發前環境介紹&設定
-
3.1 Node.js
-
3.2 nvm
-
3.3 Git
-
3.4 Yarn
-
3.5 VSCode
-
-
-
PART 3 寫程式所需的基礎常識(Node.js)
-
04 寫程式時該注意的基本原則
-
4.1 正確的宣告變數
-
4.2 有意義的命名
-
4.3 避免重複的程式碼
-
4.4 避免寫出大眾難以理解的程式
-
4.5 好的註解
-
4.6 錯誤處理&日誌(log)
-
-
05 認識Node.js 專案
-
5.1 建立Node.js 程式
-
5.2 執行Node.js
-
5.3 認識專案管家:「package.json」
-
5.4 善用scripts(腳本)執行程式
-
5.5 使用license 保護自己的權益
-
5.6 取得筆者專案原始碼
-
-
06 用Yarn 安裝及控管套件
-
6.1 套件對工程師的幫助
-
6.2 如何找出適合的套件
-
6.3 安裝套件,觀察安裝後目錄結構的變化
-
6.4 控制套件版本範圍
-
6.5 下關鍵字找工具的方法
-
-
07 善用「.env」管理環境變數,幫你快速遷移專案
-
7.1 為什麼專案需要環境變數?
-
7.2 環境變數的使用時機
-
7.3 分析專案中哪些參數適合當環境變數
-
7.4 學會使用環境變數
-
-
08 在「.gitignore」設定不加入版控的資料
-
8.1 慘痛經驗分享
-
8.2 哪些檔案/ 資料夾不需要放入版控?
-
8.3 在專案加入「.gitignore」
-
8.4 透過VSCode 確認是否成功將檔案加入忽略清單
-
8.5 為環境變數建立一個可以上傳的範例檔
-
-
-
PART 4 用selenium-webdriver 爬蟲網頁資訊
-
09 爬蟲之前
-
9.1 學習爬蟲對我有什麼好處?
-
9.2 爬蟲前請注意這些事情避免違法
-
9.3 選擇符合需求的爬蟲工具
-
-
10 認識selenium-webdriver,操作所見即所得的爬蟲工具
-
10.1 安裝selenium-webdriver 套件& 環境
-
10.2 使用selenium-webdriver 套件開啟瀏覽器
-
10.3 解決Windows 無法讀取chromedriver.exe 的問題
-
10.4 解決Windows 開啟瀏覽器時跳出USB: usb_device_handle_win.cc 的錯誤
-
-
11 爬蟲第一步,FB 先登入
-
11.1 學會分析網頁結構 - 以FB 登入頁為範例
-
11.2 打造自動登入FB 的小程式
-
11.3 專案原始碼& 執行程式
-
-
12 關閉干擾爬蟲的彈窗,取得FB 粉專追蹤數
-
12.1 關閉通知彈窗
-
12.2 將大目標拆解成小目標,以前往 FB 粉專取得追蹤人數資訊為例
-
12.3 前往FB 粉專
-
12.4 分析FB 粉專頁面結構
-
12.5 取得FB 粉專追蹤人數
-
12.6 完成爬蟲後關閉瀏覽器
-
12.7 專案原始碼& 執行程式
-
-
13 舉一反三,帶你了解IG 爬蟲不可忽略的細節
-
13.1 分析IG 登入畫面元件
-
13.2 使用css 抓取元件,完成IG 自動登入
-
13.3 分析畫面判斷使用者是否登入成功
-
13.4 了解響應式網頁對爬蟲的影響
-
13.5 設定瀏覽器開啟時的視窗大小
-
13.6 前往IG 帳號並取得追蹤人數
-
13.7 專案原始碼&執行程式
-
-
14 合體吧!用一隻程式搞定FB、IG 爬蟲
-
14.1 瀏覽器關閉時機錯誤導致爬蟲中斷
-
14.2 跨網域(CORS)錯誤
-
14.3 一隻程式爬完FB & IG 粉專
-
14.4 思考程式上有什麼地方需要改進
-
14.5 專案原始碼& 執行程式
-
-
15 重構程式碼,減少歷史業障
-
15.1 主程式做了太多事情
-
15.2 一個函式做了太多事情
-
15.3 物件宣告的方式太複雜且多次被使用
-
15.4 專案原始碼&執行程式
-
-
16 用try-catch 捕獲爬蟲過程發生的錯誤
-
16.1 了解try-catch-finally 的語法
-
16.2 思考專案中有哪些地方需要加上try-catch 的機制
-
16.3 try-catch 設計時要注意的重點
-
16.4 加入preCheck.js 做為第一道防線
-
16.5 在專案的crawlerIG.js 加入try-catch
-
16.6 將等待時間設定為變數
-
16.7 專案原始碼&執行程式
-
-
17 json x 爬蟲 = 瑣事自動化
-
17.1 客戶要將爬蟲的網址列表填到什麼檔案呢?
-
17.2 了解json 格式與基本規則
-
17.3 在專案中加入json 格式的粉專清單
-
17.4 在JavaScript 檔引入json 檔案
-
17.5 撰寫批量爬蟲程式
-
17.6 專案原始碼&執行程式
-
-
18 驗證json 的內容是否符合格式
-
18.1 為什麼json 在使用前要先驗證格式?
-
18.2 認識驗證json 格式的套件:「jsonschema」
-
18.3 測試 jsonschema 的範例程式
-
18.4 用jsonschema 來驗證json 粉專清單
-
18.5 將驗證的程式統整為函式:「jsonValidator」
-
18.6 專案原始碼&執行程式
-
-
19 優化爬蟲的小技巧
-
19.1 思考優化的方向
-
19.2 優化爬蟲執行效率及穩定度
-
19.3 讓爬蟲在背景執行
-
19.4 偽裝瀏覽器的user-agent
-
19.5 將優化的起動條件設定到「.env」
-
19.6 專案原始碼&執行程式1
-
-
20 學會爬蟲,之後呢?
-
20.1 感覺爬蟲技術還沒學夠
-
20.2 我還是想不到爬蟲可以用來做什麼
-
-
-
PART 5 使用Google Sheets 儲存爬蟲資訊
-
21 免費儲存資料的好選擇,一起進入省錢起手式
-
21.1 取得Google Sheets 憑證(credentials)
-
21.2 在專案加入官方提供的範例程式做測試
-
21.3 將Google Sheets 的憑證、授權檔加入「.gitignore」
-
21.4 專案原始碼
-
-
22 了解官方範例在做什麼事
-
22.1 套件不是照著官方文件安裝就沒事了
-
22.2 分析官方範例程式
-
22.3 取得「spreadsheetId」,並加入「.env」
-
22.4 撰寫讀取指定Google Sheets 的函式
-
22.5 專案原始碼&執行程式
-
-
23 你在文件迷路了嗎?用兩個處理Sheet 的範例帶你攻略官方文件
-
23.1 拆解爬蟲資料寫入Google Sheets 的步驟
-
23.2 讀取Google Sheets 內的Sheet 資訊
-
23.3 取得FB 粉專、IG 帳號的Sheet 資訊
-
23.4 建立放FB 粉專、IG 帳號爬蟲資料的Sheet
-
23.5 調整關聯的 Google Sheets 函式
-
23.6 在主程式呼叫更新Google Sheets 的函式
-
23.7 專案原始碼&執行程式
-
-
24 寫入爬蟲資料,告別Copy & Paste 的日子
-
24.1 分析Google Sheets 要呈現的資訊, 統整爬蟲函式要回傳的資料
-
24.2 修改爬蟲函式,讓函式回傳我們需要的爬蟲資料
-
24.3 以主程式為橋樑,將爬蟲回傳的資料更新至Google Sheets
-
24.4 將FB、IG 粉專爬蟲資料寫入各自的Sheet
-
24.5 專案原始碼&執行程式
-
-
25 客戶:「爬蟲資料塞錯位置!」專案被報Bug 的處理方式
-
25.1 將客戶報的Bug 做基礎分類
-
25.2 引導客戶說出Bug 發生原因及提出解決方案的小技巧
-
25.3 重現客戶發生的Bug
-
25.4 改寫程式讓新的爬蟲資料塞入正確位置
-
25.5 專案原始碼& 執行程式
-
-
26 客戶:「我希望新資料插在最前面!」如何談需求變更
-
26.1 了解驗收過程中需求規格書的重要性
-
26.2 談需求變更
-
26.3 將新的爬蟲資料寫到最前面,日期為由近而遠的排序
-
26.4 專案原始碼& 執行程式
-
-
27 優化格式,滿足客戶需求& 談使用者體驗
-
27.1 不好的使用者體驗來自於哪些因素
-
27.2 從客戶回饋中,討論需要新增哪些需求
-
27.3 優化用手機看Google Sheets 的體驗
-
27.4 專案原始碼& 執行程式
-
-
-
PART 6 設定排程自動執行爬蟲程式
-
28 用Schedule 套件讓爬蟲自己動起來
-
28.1 排程套件:「node-schedule」
-
28.2 把排程加入爬蟲
-
28.3 專案原始碼& 執行程式
-
-
29 用pm2 套件來控管Node.js 排程,背景執行才是王道!
-
29.1 在Mac 砍掉執行中的Node.js 排程
-
29.2 在Windows 砍掉執行中的Node.js 排程
-
29.3 使用套件「pm2」來管理Node.js 程式
-
29.4 使用「pm2-logrotate」來切割log
-
29.5 用「pm2 ecosystem」取代「pm2 CLI」
-
29.6 在「package.json」中加入驅動pm2 的scripts
-
29.7 讓Mac 重啟時pm2 自動啟動
-
29.8 讓Windows 重啟時pm2 自動啟動
-
29.9 專案原始碼& 執行程式
-
-
30 今天爬蟲怎麼沒有跑?來試試系統內建的排程吧!
-
30.1 用「Crontab」設定Mac 排程
-
30.2 用「taskschd」設定Windows 排程
-
30.3 一開始教內建的方法就好了,為什麼還要學pm2、node-schedule?
-
-
-
PART 7 透過LINE 回報爬蟲狀況
-
31 透過POSTMAN 了解LINE Notify 如何使用
-
31.1 取得LINE Notify 權杖
-
31.2 使用POSTMAN 測試LINE Notify
-
-
32 用axios 發出LINE 通知
-
32.1 axios 基礎介紹
-
32.2 用axios 發出LINE 通知
-
32.3 專案原始碼& 執行程式
-
-
33 整合LINE 的爬蟲通知,專案大功告成!
-
33.1 分析使用者需要的訊息及來源
-
33.2 調整爬蟲函式回傳的資料結構
-
33.3 調整主程式傳遞lineNotify 所需的參數
-
33.4 在「lineNotify」函式傳送通知
-
33.5 專案原始碼& 執行程式
-
-
- 出版地 : 臺灣
- 語言 : 繁體中文
評分與評論
請登入後再留言與評分