R Crawler 101 課程(201605期)
R Crawler101課程去年開課時受到大家熱情響應,在開始真正了解什麼是網路爬蟲前,可以先看看來自去年上課學員的心得分享 ─ 爬蟲是一種基本技能。(傳送門)
木刻思快問快答!
Q:什麼是爬蟲?
A:一種脊椎動物的泛稱。表皮有麟甲,體溫隨環境溫度而改變,用肺呼吸,卵生或卵胎生。如蛇、鱉、鱷等。亦稱為「爬行動物」、「爬蟲類動物」。(萌典)
Q:喔不,我是要問,什麼是網路爬蟲?
A:其實,所謂的網路爬蟲,就是把你平常開瀏覽器查資料的步驟,寫程式讓它自動完成!
Q:聽起來好 geek 噢!我又不是攻城獅,為什麼要來學網路爬蟲?
A:上網就是要學爬蟲啊!不然要幹嘛?也許你會有這種經驗,當看到有人介紹一個好吃的餐廳或是好玩的景點,如果當下沒有記錄下來,事後想要回頭找卻是怎麼都找不到?如果,有一個管家,幫忙把這些資料紀錄下來,存在一個備忘的地方,等到需要的時候是不是就省事多了呢?這些資料的功能也不只是整理歸檔,甚至是把餐廳景點分類、變成推薦給朋友尋找旅館的一項資訊,也不是不可能的!
Q:欸,這聽起來好像是 Agoda 在做的事情喔?
A:不只是他們,還有很多很多服務都是這樣的唷!像是 Whoscall 跟 WhatsTheNumber 也是收集了大量的電話資訊建檔,才能在來電的時候立即辨識出來電號碼的背後身份!在資訊爆炸的時代,有效且即時的抓取,握有比別人快、比別人多、比別人準確的資料,站在「資訊不對稱的另一端」,才是真正的《資料科學的第零步》!
Q:聽起來爬蟲是一個很棒的東西,我真希望每個人都有一個!
A:沒錯!如果你今天是⋯⋯
✓ 在網路上開店的小商人,為了掌握市場的價格趨勢來幫忙做些定價與行銷的決策,想要監控各大電商網站裡別人家的商品價格?要學!
✓ 臉書上好多人追蹤我按我讚,想要知道到底誰是我的頭號粉絲,快速過濾誰是親衛隊、誰是跟蹤狂?要學!
✓ 其實我是我們家臉書粉絲團的小編,想要透過臉書粉絲團的資料來觀察行銷的效果,還要知道各種廣告的效益?要學!
✓ 身為一個資深股民,我知道面板產業的股價震盪往往都會影響到終端市場的價格變動,想要知道各大電商裡 DRAM 價格的波動,來幫助投資決策?要學!
✓ 身為一個資深股民 2.0,其實觀察網路上各種社群媒體的風向也是很重要的!想要像美國華爾街的高手們一樣,利用 Twitter 上的輿論來幫助投資決策?要學!
✓ 身為一個職業賭徒,隨身帶把板手也是很合理的⋯⋯喔不,我想要知道各大賽事在博奕網站上的賠率變化,尤其是瞬息萬變的國際賭盤?要學!
✓ 身為一個球隊經理,其實我想知道的是職業選手們的即時狀況,不管是自家隊上的選手還是即將對戰的對手,只要體育記者們一有風吹草動,就能立即反應給球團和教練作為戰術的參考?要學!
✓ 看了好多的開放資料(Open Data)想要拿來做點什麼,卻驚覺公部門開放的資訊總是東缺一塊西漏一角?不完整的圖資、無法 mapping 正確的資料、收集得不夠全面的統計數據,需要更多的資料來源?要學!
其實,身為《資料科學的第零步》,只要你是想要用資料來做分析、決策、監控、串接,爬蟲這件小事都是不可或缺的。
那麼,大量取得資料,站在資訊不對稱的另一端後,如何將資料轉成資訊呢?由於,機器並不會自己學會東西,主要還是靠你提供的訓練資料來學習與建模。所以,資料的來源是否有偏誤?是否完整?是否有大量關聯資訊?都是非常非常重要的問題!
假如今天是個候選人想要藉由輿情分析來作為選戰決策,那麼在批踢踢上,如果只抓取了八卦版的資料,那是絕對絕對遠遠不夠的!缺少了對照組的資料,出來的結果會有嚴重的偏誤!所以,記得也要爬一下政黑板!蒐集真正完整的資料,才能夠讓數據反應出各種行為,增進分析與預測的準確性,做出更好的決策!
Q:那,我也想學爬蟲,會很難嗎?
A:木刻思 Crawler Series 是一系列想幫助學員,能夠快速的從初階到精通的課程!
不論,你是新手蟲友、或是剛入門的蟲友⋯⋯我們都希望,這堂課可以帶給你不同層次的學習、挑戰、享受與成就感!
✓ 給沒有經驗,還是初學者的你:
其實,網頁爬蟲沒有想像中的那麼困難,只要知道一些基本的網頁技術與觀念,就能在短時間內寫出第一隻爬蟲。多短呢?半天,你也能寫出爬蟲唷!一起來試試吧!(如果不小心玩上癮的話,我們也曾經教過,在一個月內就變得非常厲害的初學者唷!也許你就是下一位筋骨精奇的練武奇材!)
PS:若你是完全沒有碰過R的超級新手,不用擔心,我們也即將釋出專門教授R基礎的相關課程。
✓ 給剛剛入門,身為爬蟲新手的你:
相信,在爬行的路途上,你一定也遇過不少難纏的網站,面對日新月異的網站技術,想寫出攻無不克的爬蟲,你需要知道更多攻防戰法。讓身經百戰的爬蟲寫手,告訴你對付難纏網頁的秘訣!
Q:好迫不及待要上課了!那、可以先偷偷告訴我爬蟲的秘訣嗎?
A:其實,網路爬蟲最難的部份⋯⋯是觀察!
不論,你是新手、或是甫入門的蟲友⋯⋯爬行時,如果遭遇到困難,大多數的突破點都來自於觀察!像是常常遇見動態生成的網頁,因為通常都是使用 Ajax 方式向網站背後的資料庫要資料,或是以 javascript / css 來對應瀏覽者的行為去改變網頁上的內容,所以利用觀察網頁的行為去「找到資料來源」這件事情,才是真正的突破點!而不是埋頭寫 code 或是實做!
因此,我們並不會像一般坊間的網路爬蟲課一樣,僅僅教你如何使用某種語言的 code 來完成某些特定的爬行工作。
我們會帶領著新手,從一開始就教你各種需要多年豐富經驗才能累積出來的觀察流程與觀察技巧,並提供大量的練習機會,讓學員在課堂上有機會可以大量練習這些技巧!(為了這堂課,課程籌備團隊準備好了將近 70 個各種不同難度的網站,有不同的學習目標,可以隨時給大家練習與挑戰!)
Q:哇!所以說上完課我就會爬這麼多網站了嗎?
A:其實,只要跟著我們設計的課程,循序漸進地學習,就可以了解到這些網站的破解之道唷!像是這些網站:
✓ 金融類:
✓ 運彩類:
✓ 輿情類:
✓ 電商與商店類:
✓ 房地產類:
實價登入網站(房屋售價資訊)
永慶房屋(範例為抓取店址,房屋售價資訊為回家作業)
信義房屋(範例為抓取店址,房屋售價資訊為回家作業)
東森房屋(範例為抓取店址,房屋售價資訊為回家作業)
有巢氏(範例為抓取店址,房屋售價資訊為回家作業)
✓ 地理資訊類:
✓ 社群媒體類:
✓ 其他類:
氣象局測站資料
✓ 困難連線流程學習標的:(Crawler 102內容)
✓ 自動化練習:
如何自動在留言板上留言(登入與未登入)
如何自動在 FB 上留言與按贊
如何用爬蟲自動訂購線上商品(述不方便公佈網站)
雖然,我們無法保證在有限的上課時間中,能講完以上所有的範例!
但是,可以保證的是,如果你把上課中提到的技巧都學會了,假以時日,要取得上述網站中的資料就會有如探囊取物般!
這些,是木刻思課程的講師助教群,特別精心挑選過的一些範例,非堂適合初學者或入門者,可以從初學到進階作為練習使用!
✂ 課程進度與時程安排
Week1、05/21
爬蟲爬什麼?
爬完之後會產出什麼呢?
The Secret of Web
網頁如何出現在你眼前的?
如何觀看網頁的各種 connections?
你想抓的 data 在頁面上的哪裡?
你想抓的 data 在哪一個 connection 中?
什麼是 Ajax 網頁?
標出你想要的 data
CSS Selector
XPath Selector
基本的爬蟲架構:connector + parser + database
如何用 R 寫出最簡單的爬蟲
Week 2 、05/28
如何用 R 模仿瀏覽器的行為?
Connection Skills (with R) :
GET / POST
URLencode / URLdecode (破解中文網址的祕密)
header & cookie
如何突破使用 cookie 阻擋的網站 (如ptt 18 禁...等等)
Parsing Skills (with R):
css selector
xpath selector
json
xml
Data Storage
如何將資料輸出成 CSV
如何將資料存入 SQLite
Week 3、06/18
Connection Skills (with R):
如何學習與使用第三方 API ?
教學範例:Facebook Graph API
API 簡介
node & edge
metadata
fields & connections
實做範例:
當個自己的小小徵信社:尋找一下,近三個月內最喜歡按你讚的人是誰?
如何自動在 FB 上 post 文章?
如何自動幫朋友的文章按讚?狂讚士?
其他常見 (用) 的第三方 API 有哪些 ?
Parsing Skills (with R):
Regular Expression 簡介
如何用 RegEx 抽取非結構化資料 (非HTML/XML/JSON)
如何抓取網頁中的電話號碼?地址?
✂ 課程進行方式
✓ 每次三小時,講課加上現場操作(現場有助教輔導)
✓ 會幫大家分小組,每個小組會有助教擔任 Mentor
✓ 每堂課後都有 Office Hour,讓大家可以現場找 Mentor 請益
✓ 每次都有小組回家作業或專案,我們希望大家不只能來上課,還能交到許多志同道合的蟲友們。
✓ 所以,當您報名之後,我們會針對大家想爬行的網站,進行分組。並在此同時,就會有小組 Mentor 與您聯繫,讓您可以加入一些小組對話群組,並熟悉界面與論壇的使用!
✂ 上課前的課前作業
✓ 如果您不熟悉 R 的話,可以從這裡開始:http://tryr.codeschool.com/
✓ 如果您對 HTML 和 CSS 沒有基礎概念的話,可以從這裡開始:http://www.codecademy.com/en/tracks/web,動手學 HTML & CSS
✓ 或是習慣看影片學習的朋友,也可以從這邊開始:https://www.udacity.com/course/intro-to-html-and-css--ud304
✂ 課前說明會
此外,為了讓大家可以在上課之前,更了解我們的課程。讓大家可以做好更充沛的課前預習,以便能在學習時發揮最大效益!我們特別準備了一場課前說明會,讓大家可以到現場來提問唷!
如果您是還在猶豫是否報名的朋友,那就更應該來參加我們準備的課前說明會了!相信,一定可以讓您覺得,這是一次非常值得投資的學習與體驗!
而且,如果您想用三人團報方案,但是苦於找不到夥伴一起團報的話,那就更應該參加本次的說明會了!說不定就可以在現場遇到一起團報的夥伴囉!
✂ 課外砍站活動:蟲友小聚
為了讓上過木刻思開的爬蟲課的學員們 (目前開過 Python & R 的課),能有更多練習的機會。木刻思特別企劃了(只有老學員才可以參加的)練習活動:
http://datasci.kktix.cc/events/crawlerhackthon-201511
讓大家可以在學習之餘,也能有更多練習和玩耍的機會!其實,寫爬蟲是一件非常有趣的事情,希望大家都能夠發揮柯南的精神,享受探索網站的樂趣!
✂ 報名課程附有發票
所以,請您在填寫報名表時,務必註明所需要的發票種類,如果需要三聯發票,也請註明統一編號!
✂ 退票機制
課程前11天以上退票,kktix 手續費10%(kktix受理退票事宜)。
課程前10天內退票,公司處理退票手續費20%。
✂ 團報優惠
由於,課程會分組,所以我們特別提供三人報名的優惠,讓大家可以在報名時就先揪好小組組員!
✂ 木刻思之友課程優惠
此外,若您曾經上過木刻思開設過的其他爬蟲課程(RCrawler、PyCrawler⋯⋯)等等,想請購優惠票,也請您來信至course@agilearning.io
使用信件 Title: [R Crawler 報名] 優惠票請購,並請在信中註明一下,之前曾經上過的課程!(我們將提供您優惠票的 Promotion Code)
✂ 歡迎企業包班上課
另外,如果您的企業有超過 20 人想報名上課的話。也歡迎來信至 course@agilearning.io
並使用信件 Title: [R Crawler 報名] 企業包班申請;我們也非常歡迎企業包班上課唷!
✂ R Crawler 課程輪開週期
由於,公司開課人力(講師與助教)有限,本次的 R Crawler 初階課程,將會以三到四個月輪開一次的週期,一年三次左右的次數輪開。所以,錯過這次,下次最快能上到同一堂課的機會,可能是三四個月(或更久)以後囉!
在中間的時間中,我們會開設更多的進階課程,以及延伸學習課程!希望能讓學員們,在取得資料資後,能夠做更多的應用,視覺化,與分析!
✂ 場地夥伴
チケット種別 | 販売期間 | 価格 |
---|---|---|
[單堂票] 2016/05/21 Week1 : 09:00 - 12:00
|
2016/04/10 00:00(+0800) ~ 2016/05/20 12:00(+0800) 販売終了 |
|
[雙堂票] 2016/05/21 Week1 : 09:00 - 12:00 + 2016/05/28 Week2 : 09:00 - 12:00
|
2016/04/10 00:00(+0800) ~ 2016/05/18 12:00(+0800) 販売終了 |
|
[全勤票] 2016/05/21 Week1 : 09:00 - 12:00 + 2016/05/28 Week2 : 09:00 - 12:00 + 2016/06/18 Week3 :09:00 - 12:00
|
2016/04/10 00:00(+0800) ~ 2016/05/20 12:00(+0800) 販売終了 |
|
[團報票] 2016/05/21 Week1 : 09:00 - 12:00 + 2016/05/28 Week2 : 09:00 - 12:00 + 2016/06/18 Week3 :09:00 - 12:00 三人團報套票
|
2016/04/10 00:00(+0800) ~ 2016/05/20 00:00(+0800) 販売終了 |
|
[課程說明會落單票] 2016/05/21 Week1 : 09:00 - 12:00 + 2016/05/28 Week2 : 09:00 - 12:00 + 2016/06/18 Week3 :09:00 - 12:00
|
2016/04/22 00:00(+0800) ~ 2016/05/19 00:00(+0800) 販売終了 |
|