斧頭幫入會挑戰 (Crawler War Game) 發想

為了能訓練更多的斧頭幫成員能夠循序漸近砍下更有價值的木材,來規劃一個 Crawler War Game 遊戲,網站上提供一些常見的 HTML 或者搜尋功能的網站,挑戰方法就是你自行寫一個程式將網站爬下來,並且把他轉換成題目要求的 CSV 或 JSON 格式,只要內容吻合就可以挑戰下一關,後面的難度將會越來越高。

也歡迎學生把自己寫的程式傳到 GitHub 跟大家分享,無論是使用什麼程式語言,讓更多人能夠交流如何寫 Crawler。鼓勵學生寫 wiki or blog 發表心得

注意事項

工作分配

關卡技術挑戰

範例網站:

關卡規劃

  1. 最簡單的標準 <table><tr><td> 只有一頁的網站
  2. 上一關加上 pager
  3. 第二關改成 pager 還要用 POST 的網站
  4. 第二關加上會認 referer
  5. 第二關加上會認 user-agent
  6. 第二關加上會擋一秒鐘只能 GET 一次的網站
  7. 第二關加上超不穩定,9.2% 機率會 500 的網站
  8. 第二關的 pager 改成 infinite scroll
  9. 大量 ajax 的網站
  10. table 中包一堆 table ,沒有 id 可以用的網站 (gov.tw 常見)
  11. HTML 格式一堆 syntax error 以及 id 重覆使用的 nested table
  12. JSP 產生的網站,會需要認 _VIEW_STATE 內容
  13. 資料被放在 js code 中的網站
  14. 第一關改成同一 ip 一天限抓 5 次, 要求抓 100 次
  15. 要求座標轉換, 也許是度分秒轉度, 還有 twd67,wgs84 轉換之類. 小於 x 公尺就算通過. 主要目的是讓大家知道有不止一種座標.
    1. 進階的還包括離島. 不過這我也還不知道怎麼做比較好 :P

討論區