還記得今年年初Twitter在幾小時內損失80億美元(約合512億人民幣)的事情嗎?這都得“歸功於”網絡爬蟲(web scraper)——一種許多公司和數據新聞記者都在使用的網絡工具。
網絡爬蟲其實是一種能讀取、分析網頁HTML代碼的電腦程序。有了這樣一個程序(又稱“機器人自動程序”),用戶就可以從網頁採集數據和信息了。
讓我們回到今年4月份,看看當時發生了什麼。由於季度財報數字不太理想,Twitter本想在證券交易所收盤之後才公布結果,以避免投資者信心受到重創。很可惜的是,由於一個錯誤,股市收市前其財報就被放上了網,45秒後才被撤下。
然而正是在這關鍵的45秒里,網絡爬蟲程序找到了這些數據,將其格式化並自動發布到了Twitter上。(現在,連自動程序都能搶到獨家新聞了!)
這條推文一經發布,便引起了交易者們的強烈反應。而對Twitter來說,這無疑是場災難。運行該自動程序的Selerity是家擅長實時分析的公司,一時間也成了眾矢之的,只好在事件發生幾分鐘之後對情況進行解釋。
對於自動程序來說,45秒的時間幾乎能算是“地老天荒”了:根據Selerity公司的說法,它的自動程序發布財報結果只用了3秒鐘。
網絡數據採集與新聞業
隨着越來越多的公共機構在網站上發布數據,懂編程的記者們會發現,網絡數據採集正越來越成為他們的好幫手。
譬如說,在為Journal Métro寫報道的時候,我就曾利用網絡爬蟲抓取數據,以比較魁北克酒業專業局(Société des alcools du Québec)1.2萬種商品和安大略酒類控制局(the LCBO in Ontario)1萬種商品的價格。
還有一次,我打算在薩德伯里(加拿大安大略省南部城市)調查當地餐廳食品檢查的情況。所有這類檢查的結果都發布在薩德伯里健康部門(the Sudbury Health Unit)的網站上,但網站卻沒有下載所有數據的功能,人們只能逐個核對所有餐廳的情況。
為了提高效率,我先是要請求檢索保存了檢查結果的整個數據庫,但被拒絕。之後我又提交了一份公開信息申請,但健康部門卻要求我為此先支付2,000美元(約合12,797元人民幣)的費用。
我沒有交錢,而是決定編寫自己的自動程序,以從薩德伯里健康部門的網站上直接抓取全部信息。結果如下:
這個程序是用Python寫成的,並在Selenium library(一種配合自動程序運行的軟件)的幫助下控制Google Chrome瀏覽器。該程序逐個點擊健康部門對1,600個設施的檢查結果,抓取數據,並把信息存為Excel文件。
如果單靠手工操作的話,這項工作得花上你幾個星期。而利用自動程序,一個晚上就能搞定。
不過,當自動程序不知疲倦地抓取成千上萬行代碼時,有個想法一直困擾着我:網絡數據採集的道德標準是什麼?
我們有權利抓取任何網絡信息嗎?網絡數據採集與黑客行為的界線到底在哪裡?對於目標機構和讀者來說,我們又該如何保證採集過程的透明度?
作為記者,我們必須遵守最高的(職業)道德標準,否則,讀者們怎麼能相信我們報道的都是事實呢?
可惜,魁北克職業新聞工作者聯合會(Fédération professionnelle des journalistes du Québec)於1996年採用、2010年修訂的專業守則已經過時,給不了我明確完整的答案。
加拿大記者協會(Canadian Association of Journalists)的(職業)道德指引頒布時間較新,但也沒能說清楚這個問題。
魁北克大學蒙特利爾分校的新聞學教授Jean-Hugues Roy表示:“這些是全新的領域。新的工具促使我們重新思考(職業)道德的定義,(職業)道德標準也應與技術共同發展。”
因此,我決定自己去找答案。我聯繫了幾個加拿大數據新聞記者,進行了一次調查。相關結果將會陸續發布,敬請關注。
註:如果你想試着開發自己的網絡爬蟲,可以參考我在2月份發布的一個簡短教程。從中你能學到如何抓取加拿大國會網站的數據。
Nael Shiab畢業於加拿大國王學院大學數字新聞碩士項目。他曾在加拿大電台擔任視頻記者,目前是Transcontinental的數據新聞記者。他的Twitter賬號為 @NaelShiab