商品編號:DJAA2V-A900BKYPD

JavaScript 爬蟲新思路!從零開始帶你用 Node.js 打造 FB&IG 爬蟲專案(iT邦幫忙鐵人賽系列書)

$490
$620
折價券
  • P幣

    全盈+PAY單筆消費滿1200回饋80P幣(限量)

  • 登記送

    【全家】單筆滿$350純取貨/取貨付款訂單登記送冰仙女紅茶兌換券乙張(限量)

  • 登記送

    【7-11】單筆滿$350純取貨/取貨付款訂單登記送香鑽水果茶兌換券乙張(限量)

付款方式
出貨
  • PChome 倉庫出貨,24小時到貨
配送
宅配滿$490免運,超取滿$350免運
  • 宅配到府(本島/低溫)
    滿$699免運
  • 宅配到府(本島/常溫)
    滿$490免運
  • 超商取貨(常溫)
    滿$350免運
  • 超商取貨(低溫)
    滿$699免運
  • i郵箱(常溫)
    滿$290免運
商品詳情
作者:
ISBN:
9789864348008
出版社:
出版日期:
2021/07/28
  • 內文簡介

  • <內容簡介>

    本書內容改編自第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. 比別人擁有更多技能優勢

    本書線上資源:
    https://github.com/dean9703111/social_crawler



    ★目錄:

    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 專案原始碼 & 執行程式

    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 專案原始碼 & 執行程式


    <作者簡介>

    林鼎淵(Dean Lin)
    待過專業的接案公司、也有獨立接案的經驗,這本書教的是從談需求到真實商業環境的程式開發,可以讓讀者接地氣的學習。
    筆者擁有5年的全端開發經驗,熟悉 Vuetify、Node.js、Laravel 等前後端技術;同時也兼職公司內部伺服器管理與 Gitlab 架設部署等相關任務。
    除了精進工作上的技術外,也會研究新的技術領域;在2019年出於對魔術的愛好, 學習並運用 React Native 開發了能在行動裝置 Android/iOS 運行的魔術 APP。
    在空閒時會與朋友交流 idea,碰上有趣的想法就會研究相關技術並將其寫成 Side Project,像本書的爬蟲技術就是為了幫朋友解決工作遇到的困擾而研究的。
    不僅對技術充滿熱情,更會將自身的經驗分享到部落格上,希望可以幫助遇到相同問題的人:
    https://medium.com/dean-lin
購物須知
寄送時間
全台灣24h到貨,遲到提供100元現金積點。全年無休,週末假日照常出貨。例外說明
送貨方式
透過宅配送達。除網頁另有特別標示外,均為常溫配送。
消費者訂購之商品若經配送兩次無法送達,再經本公司以電話與Email均無法聯繫逾三天者,本公司將取消該筆訂單,並且全額退款。
送貨範圍
限台灣本島與離島地區註,部分離島地區包括連江馬祖、綠島、蘭嶼、琉球鄉…等貨件,將送至到岸船公司碼頭,需請收貨人自行至碼頭取貨。注意!收件地址請勿為郵政信箱。
註:離島地區不配送安裝商品、手機門號商品、超大材商品及四機商品。
售後服務
缺掉頁更換新品
執照證號&登錄字號
本公司食品業者登錄字號A-116606102-00000-0
關於退貨
  • PChome24h購物的消費者,都可以依照消費者保護法的規定,享有商品貨到次日起七天猶豫期的權益。(請留意猶豫期非試用期!!)您所退回的商品必須回復原狀(復原至商品到貨時的原始狀態並且保持完整包裝,包括商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性)。商品一經拆封/啟用保固,將使商品價值減損,您理解本公司將依法收取回復原狀必要之費用(若無法復原,費用將以商品價值損失計算),請先確認商品正確、外觀可接受再行使用,以免影響您的權利,祝您購物順心。
  • 如果您所購買商品是下列特殊商品,請留意下述退貨注意事項:
    1. 易於腐敗之商品、保存期限較短之商品、客製化商品、報紙、期刊、雜誌,依據消費者保護法之規定,於收受商品後將無法享有七天猶豫期之權益且不得辦理退貨。
    2. 影音商品、電腦軟體或個人衛生用品等一經拆封即無法回復原狀的商品,在您還不確定是否要辦理退貨以前,請勿拆封,一經拆封則依消費者保護法之規定,無法享有七天猶豫期之權益且不得辦理退貨。
    3. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,一經您事先同意後始提供者,依消費者保護法之規定,您將無法享有七天猶豫期之權益且不得辦理退貨。
    4. 組合商品於辦理退貨時,應將組合銷售商品一同退貨,若有遺失、毀損或缺件,PChome將可能要求您依照損毀程度負擔回復原狀必要之費用。
  • 若您需辦理退貨,請利用顧客中心「查訂單」或「退訂/退款查詢」的「退訂/退貨」功能填寫申請,我們將於接獲申請之次日起1個工作天內檢視您的退貨要求,檢視完畢後將以E-mail回覆通知您,並將委託本公司指定之宅配公司,在5個工作天內透過電話與您連絡前往取回退貨商品。請您保持電話暢通,並備妥原商品及所有包裝及附件,以便於交付予本公司指定之宅配公司取回(宅配公司僅負責收件,退貨商品仍由特約廠商進行驗收),宅配公司取件後會提供簽收單據給您,請注意留存。
  • 退回商品時,請以本公司或特約廠商寄送商品給您時所使用的外包裝(紙箱或包裝袋),原封包裝後交付給前來取件的宅配公司;如果本公司或特約廠商寄送商品給您時所使用的外包裝(紙箱或包裝袋)已經遺失,請您在商品原廠外盒之外,再以其他適當的包裝盒進行包裝,切勿任由宅配單直接粘貼在商品原廠外盒上或書寫文字。
  • 若因您要求退貨或換貨、或因本公司無法接受您全部或部分之訂單、或因契約解除或失其效力,而需為您辦理退款事宜時,您同意本公司得代您處理發票或折讓單等相關法令所要求之單據,以利本公司為您辦理退款。
  • 本公司收到您所提出的申請後,若經確認無誤,將依消費者保護法之相關規定,返還您已支付之對價(含信用卡交易),退款日當天會再發送E-mail通知函給您。