Sunday, May 18, 2014

Scala筆記: g0v斧頭幫大挑戰與Regular Expression

前篇才要跟Regular Expression變成好朋友,
剛好看到g0v的斧頭幫大挑戰,
就決定繼續跟Regular Expression培養感情囉XD
(同時也順便跟PlayFramework還有Future拉近距離, 一魚三吃來著!)
第一關的主要任務就是要抓網頁然後爬table最後將資料轉成Json

val tableRegEx = """([^/]*)([^/]*)([^/]*)([^/]*)([^/]*)([^/]*)""".r 

for (tableRegEx(name, chinese, math, science, society, health) <- tableRegEx findAllIn respBody) 
yield {             
  s"""{"name": "${name}", "grades": {"國語": ${chinese}, "數學": ${math}, "自然": ${science}, "社會": ${society}, "健康教育": ${health}}}"""
}   
respBody是拉回來的網頁內容,
首先就根據table的欄位寫出對應的regular expression,
然後用findAllIn找到所有的符合的資料並抓出每個欄位, 回傳的是MatchIterator,
接著用for-yield將每筆資料轉成Json ojbect的樣子,
最後在稍加處理就可以變成題目要求的格式囉!

No comments:

Post a Comment