Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unit test 及新聞來源修正 #19

Open
wants to merge 10 commits into
base: master
Choose a base branch
from

Conversation

yookoala
Copy link

Crawler_* 類別,頗易受新聞網站更新所害,需要維護。但到需要維護時,由於舊版網站已經不存在,難以比對判定是否有結構改動,或者改動在甚麼地方出現。另外在改動時,在原有的程式架構下頗難自動測試,因此想修改程式架構,持續測試目前的 Crawler_* 類別。

  1. 將原有程式架構,改得較易做 unit test
  2. 在各大新聞來源下載一些範例內容,以方便進行 unit test
  3. 為所有現存的 Crawler 編寫對應的 unit test
  4. 加入 Travis CI 設定檔,讓 Travis 可以自動對每一個 push 進行 unit test

另外有一些零星的改善,包括︰

  1. 將新聞來源的定義統一到一個地方去,方便新增來源(這方便我們在 Code4HK 的工作)
  2. 改用 git submodule 連結 url-normalizer.js,讓源碼控制較為靈活。

@yookoala
Copy link
Author

工作中途,發現中央社 (CNA) 和公視新聞網 (PTS) 新聞來源不能正常解析,順便寫了相關的更正。

將新聞來源的定義(包括類型、不同域名的 parser method、id 等等)統一
用 NewsSourcesCfg 類型處理。
1. 將 SimpleTest 加入到 stdlibs
2. 新增 tests/run-all.php ,自動尋找、執行所有 tests 內的 *.test 檔案
3. 修改 webdata/init.inc.php ,在 unit test 模式下跳過伺服器連接程序
不直接使用 url-normalizer.js 代碼,改為用 submodule 方式連結。
工作彈性比較大。
原有的 Crawler_*::crawl 頗多重覆,而且難以進行 unit test,故作出下
列改動。

將原有的 Crawler_*::crawl 方法拆開重寫︰
1. 將取得目錄 HTML 的部份改寫成 crawlIndex 方法
2. 將解析 crawlIndex 方法所得,取得連結的部份,改寫成 findLinksIn
3. 移去所有資料庫操作

新加入 Crawler::crawl 方法,將原有 Crawler_*::crawl 內,將連結加入
資料庫的部份,集中到該處,並修改 webdata/scripts/crawler-new.php
改為使用 Crawler::crawl 方法抓取連結。
這批 unit test 的目標是固定現況,有些新聞來源似乎有問題,需要維護
修改,已經紀錄在相關的 README.md 上,日後會修正。
將 Crawler::updateContent 之中與資料庫沒有直接關係的部份,分拆成
Crawler::prepareContent,以方便在 unit test 之中引用。
在所有 parse 測試前,先對內容執行 Crawler::prepareContent。這比較合
乎正式的流程,也處理掉先前沒有 iconv 而產出 big5 的問題。
容許 Travis CI 在每次 push 時,自動執行所有 unit test 測試。
中央社在 2014/12/12 改版。本修改更正有關新聞來源,並更正相關的 unit test。
公視新聞網似乎在 2014/12/12 修改了 og:title 的產生機制,以致出現錯誤。
本修改已修正相關問題。並更新了相關的 unit test。
@yookoala yookoala force-pushed the backport-improvement branch from 2084404 to 960d7c3 Compare December 20, 2014 10:47
@yookoala
Copy link
Author

雖然修改頗大,但希望能認真考慮使用

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant