还记得今年年初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