使用 airflow 執行爬蟲單元測試來打造網站改版自動偵測通知服務

摘要

對於構建大規模爬蟲搜尋引擎系統來說一定會遇到因不同網站不定期改版,而導致爬蟲失效所引發漏資料的問題。如何有效率的在第一時間就從近千個網站中得知有哪些網站改版而去修復爬蟲,對於維持資料的完整性來說是一件非常重要的事。本演講分享如何對舊有的爬蟲系統進行重構,並對各個不同網站爬蟲撰寫單元測試,使得可藉由執行爬蟲單元測試來驗證網站是否改版。然而隨著單元測試越來越多,原來在爬蟲系統CI階段就執行網站爬蟲單元測試時間越來越久,會進而引響其他CI階段的驗證及部署,且利用CI階段來執行單元測試的方式並沒有一個統一且定時的最後結果通知服務。因此,這裡我們看上了排程系統airflow易於管理不同相依任務的便利性,將原來在CI階段執行的網站爬蟲單元測試改為使用airflow定時去執行,單元測試任務執行完後,就進入到彙整爬蟲改版報告階段,最後並將報告發送至通知服務(ex: Mattermost),來打造出一個基於 airflow dag的爬蟲網站改版自動偵測通知服務,來解決因網站不定期改版所導致爬蟲漏資料的問題。

說明

使用的第三方工具: - [airflow] 一個自動化任務排程管理工具 - [pytest] 為 Python 熱門的單元測試函式庫 - [betamax] 一種用來 mock http request 的 python 函式庫 [airflow]: https://airflow.apache.org/ [pytest]: https://docs.pytest.org/en/latest/getting-started.html [betamax]: https://github.com/betamaxpy/betamax

投影片

https://drive.google.com/open?id=1H7dStQ5LhuyLed_TKG2O1tZpVYIvlxlr

講者

Mark Chang

我叫張哲瑜(Mark Chang)目前是一名資料工程師,熱愛學習新的技術也很喜歡參與社群活動。