把你平常開瀏覽器查資料的步驟,寫程式讓它自動完成!
大數據的時代,要如何「拿到資料」是最基本的起手式。
2016/10/12
把你平常開瀏覽器查資料的步驟,寫程式讓它自動完成!
大數據的時代,要如何「拿到資料」是最基本的起手式。
目標:找出資料放在哪裡
找出資料藏在哪個 request 裡
觀察 request 的內容
拿取資料
練習:請用 Chrome 打開批踢踢網頁版
打開「開發人員工具」:右鍵 > 檢查
切換到 Network 標籤
按下 Record network log (確認紅燈亮著)、按下 All
重新整理網頁
找出資料藏身在哪一個 Request 裡面
Requests 很多,找不到怎麼辦?
找到資料所在的 request 之後……
第一眼觀察重點:
Request URL
Request Method (GET/POST/…)
Status Code (200/302/404/…)
第二眼觀察重點:
Response Headers (location/set-cookie)
Request Headers (cookie/referer/user-agent/…)
用「無痕模式」再一次打開批踢踢網頁版
轉址到 18 號窗口
點選已滿 18 歲即成功進入
適用於比較單純的網站
複習一下:找到資料所在的 request 之後……
第一眼觀察重點:
Request URL
Request Method (GET/POST/…)
Status Code (200/302/404/…)
通常 URL 中就有變數藏在裡面
URL?var1=val1&var2=val2 …
【修改 URL 變數】練習看看:
+ 2330台積電 ⇒ 2498宏達電 https://tw.stock.yahoo.com/d/s/major_2330.html + 批踢踢網頁版首頁 ⇒ 上一頁 https://www.ptt.cc/bbs/Gossiping/index.html
通常 URL 中就有變數藏在裡面
URL?var1=val1&var2=val2 …
【串接 URL】練習看看
+ 5284 公車路線 http://5284.taipei.gov.tw/TextSearch.aspx + 公開資訊觀測站 http://mops.twse.com.tw/mops/web/t51sb01
GET (with query strings)
可以直接以網址拿資料
注意網址有時候會有參數
POST
除了提交網址之外,還要提交參數才能拿資料
中文要注意編碼問題(特別是 Windows )
特別用在須要通行證的網站
練習:
+ Mobile01 論壇 http://www.mobile01.com/topiclist.php?f=520 + 漫畫 http://tw.ikanman.com/comic/1128/9771.html#p=3
要如何從 Data Page 中取出 Data?
安裝 Chrome extension SelectorGadget
範例:pchome商品
Chrome Console: document.querySelectorAll("CSS Selector")
安裝 Chrome extension XPath Helper
範例:露天拍賣
Chrome Console: $x("XPath Selector")
請安裝:
安裝 RStudio
執行 install_packages.R 以安裝所需套件
對 R 不熟的人請閱讀:
有空的人可以: