PyConAPAC 2015 Tutorial - 模仿遊戲 用爬蟲類學爬蟲

課程簡介

「現在告訴我,我是一個人,還是一隻爬蟲呢?」

網路爬蟲程式是模仿人類行為自動造訪網站並擷取網站訊息的程式,具有極高商業應用價值。本教學活動透過動手實作,讓您具有網路爬蟲程式的基本概念與實戰能力。您可以從取得新聞、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 來實現

參考資源

講員

1. Adrian Liaw
目前在家自學的國三生,現為Agilearning平台的開發者之一。熱愛 Python,熱愛寫程式。Coding 年齡兩歲半,喜歡把 Coding 當成一門藝術。 曾在社群分享用 Python 自動解魔術方塊等主題,目前正在往資料領域的方向學習。
2. Chih Cheng Liang
線上學習愛好者,現為Agilearning平台的開發者之一。喜愛經濟學、金融學、資料分析,曾經當過半年工人智慧爬蟲。
3. Ning Chen
R Ladies Co-Founder,目前是木刻思團隊的一員,專注於爬蟲跟獨立的資料取得,正在研究機器學習,原先在大型網路公司擔任資料分析師很常玩及研究Excel Tableau。
淡江大學台北校區 (捷運東門站) 406 教室 / 台北市金華街199巷5號

Event Tickets

Ticket Type Sale Period Price
Regular / 一般票

2015/04/20 10:00(+0800) ~ 2015/05/30 17:00(+0800) End of Sale
  • TWD$5,000
Student / 學生票

2015/04/20 10:00(+0800) ~ 2015/05/30 17:00(+0800) End of Sale
  • TWD$3,500
Next Step