課程簡介
「現在告訴我,我是一個人,還是一隻爬蟲呢?」
網路爬蟲程式是模仿人類行為自動造訪網站並擷取網站訊息的程式,具有極高商業應用價值。本教學活動透過動手實作,讓您具有網路爬蟲程式的基本概念與實戰能力。您可以從取得新聞、PTT戰文、社群網站內容擷取、懶人訂票等各種範例中,學到征服常見網頁的爬蟲技術。
Be sure to check out our Tutorial Overview page for general info, such as list of all available tutorials, minimum enrollment number, and contact info.
行前準備
- 一台能上網的電腦(瀏覽器建議使用 Chrome 或 FireFox)
- 基礎 Python 語法認識。較客觀的準則:如果能用任何方式,上網搜尋、問親朋好友﹍等,預測下列程式碼double(5)會印出的內容(不小心發現答錯也沒關係),我們即認為您可以在本課程收穫許多。您也可以事先學習Codecademy Python。
課程大綱
總共六個小節,9:00到12:00會包含前三小節,14:00到17:00會包含後三小節,授課共六小時,每小時會有5分鐘休息。
小節一、爬蟲穿新衣
寫爬蟲之前要先了解瀏覽器是如何運作的,肉眼在瀏覽器所看到的畫面是根據哪些資料產生?介紹瀏覽器運作原理、URL、請求與回應。
- talk: How Browsers Work
- Client & Server concept
- Browser Developer Tools
- HTML/CSS/JavaScript
- Python requests package
- lab: Find PTT(or any website you like) URL Patterns
- 找出PTT網頁版的網址規則
- 使用requests取得PTT網頁版的網頁內容
小節二、爬蟲肚子餓
一般來說,網頁是專門設計來把資料呈現給人類眼球閱讀的,有些網站也會想把資料呈現給機器使用,我們會介紹這些讓機器使用的應用程式界面(API)。
- talk: Common Data Formats In The Web & APIs
- Usual data formats: json, xml, and csv.
- Handling json, xml, and csv with Python.
- lab: Facebook Graph API
- 拆解內容取得想要的資料
- 今年我被按了多少讚
小節三、爬蟲去覓食
介紹使用GET與POST方法送出請求並取得網頁訊息。取得網頁資訊後,要利用常見剖析網頁資料的工具擷取出內容。最後有專案應用––新聞大對決,鄉民常說雅虎新聞跟PTT是平行宇宙,我們來練習抓取雅虎新聞與PTT八卦版來比較看看。
- talk: Control Your Data Like Your Hands
- Handling Requests (GET, POST, etc.)
- Parsing Tools (BeautifulSoup4)
- CSS Selectors
- lab: Yahoo news and PTT
小節四、爬蟲被餵食
進一步介紹剖析技巧,針對常見的資料格式做處理。目的是把資料清理乾淨後送進資料庫裡。在專案中,會帶大家爬臺灣證券交易所的資料做練習。
- talk: Always Keep Warehouses Clean
- Parser Skills (Encoding, Table, bad csv)
- database(SQLite)
- lab: Taiwan Stock Exchange Data
- 臺灣證券交易所
小節五、爬蟲挖地道
爬網頁不一定每次都要繞過使用者界面,在適當的時機使用Web Driver可以省下很多麻煩。大家會在懶人方式下單訂票的範例體驗到。
- talk: Browse It Like a Boss
- Web Drivers (selenium)
- lab:
- 懶人自動化訂票 or 下單
小節六、爬蟲去斗六
需要登入的網站要用特別的技巧才能取得資料。我們會介紹token與Cookie的概念,並應用在懶人訂票專案中。
- talk
- Advanced Connector Skills (token, Cookie)
- lab:
- 懶人自動化 (高速) 訂票 or 下單
參考課後作業、自己的爬蟲自己寫
- 擷取當日PTT八卦版前三大戰文
- Coursera 自動加入「當前沒有班次」的課程
- 自己提出爬蟲 idea 來實現
參考資源
- public crawler tutorial by c3h3: http://nbviewer.ipython.org/github/c3h3/NCCU-PyData-Courses-2013Spring/blob/master/Lecture1/crawler/Lecture2_WebCrawler.ipynb
講員
- 1. Adrian Liaw
- 目前在家自學的國三生,現為Agilearning平台的開發者之一。熱愛 Python,熱愛寫程式。Coding 年齡兩歲半,喜歡把 Coding 當成一門藝術。 曾在社群分享用 Python 自動解魔術方塊等主題,目前正在往資料領域的方向學習。
- 2. Chih Cheng Liang
- 線上學習愛好者,現為Agilearning平台的開發者之一。喜愛經濟學、金融學、資料分析,曾經當過半年工人智慧爬蟲。
- 3. Ning Chen
- R Ladies Co-Founder,目前是木刻思團隊的一員,專注於爬蟲跟獨立的資料取得,正在研究機器學習,原先在大型網路公司擔任資料分析師很常玩及研究Excel Tableau。