辅助功能设置

文字大小

色彩设置

单色 柔和色 dark

阅读工具

底部遮盖 标尺

文章

伦敦希思罗机场有多扰民?BBC数据记者用爬虫揭晓

编者注:2016年10月,英国政府批准了希思罗机场修建第三跑道的计划,欲以此增加就业,刺激经济。反对声音则指此举会给伦敦造成更严重的环境、空气及噪音污染。为研究噪音对机场附近居民的影响,BBC数据记者Daniel Wainwright编写网络爬虫,抓取希思罗机场官网数据,结果发现平均每五分钟机场就会收到一个噪音投诉。他的数据调查随后由BBC发表。想知道他怎么收集与分析数据?深度网为你编译他的分享。


heathrow-airport-336x326我一直纳闷:为什么在一些大会上分享有关爬虫程序知识的人,从来都不真正解释一下爬虫的编写过程呢?在我看来,这应该是每个调查记者最热衷的技能之一。

因此,在英国伯明翰举行的第一届数据新闻大会上,我在一个即兴环节尝试讲了一下如何编写爬虫。然后我就明白了,这讲解起来还真不是想象中那么容易。

如果你不熟悉数据新闻,让我来解释一下:爬虫就像一种神奇的魔法,只是你施展的工具是表格而非魔杖。

运用爬虫,无穷无尽的数据和文字就会乖乖地整整齐齐地列在一张表格中,让你能轻松地进行整理、过滤和查询。

你还可以让爬虫程序在一旁“跑着”,而你去联系采访,或者只是泡一杯茶。

 

收集希思场的噪音投诉

我用了一个十分基础的爬虫程序,从希思罗机场网站上收集了三年来针对机场噪音投诉的数据。那段时间第三跑道修建计划屡见报端,我想要快速地弄明白噪音究竟是多大的问题。

最终,我的调查故事发表在BBC上,随即被其他许多新闻机构采用。

heathrow-operation我是怎么做的呢?

这是希思罗机场网站上,2016年11月14日那天的日常运作数据页面。由此可知,每天的噪音投诉数据是以单独的URL链接发布的。要把这些数据整理到一张表格上,必将花费我好几个小时甚至好几天时间。

于是,在Googlesheets上,我创建了一个标准公式,以导入每个运作数据网页的HTML表格数据。(最好新建表格来做这一步。在英国数据新闻大会上,我试着在原有的表格上改动,结果生成了一整页的 #REF! 错误。)

airport-1

参见上图。注意头两个数字对应的是通信(电话、电邮与信件)和网络投诉的总数:

airport-2

投诉总数(E栏)等于这两者相加,=C2+D2。

 

抓取数据的公式

现在让我们来一步步分解这个公式:

=substitute(INDEX(ImportHTML(A2, “table”, 1), 33, 2), “*”, “ ”)

从中间开始,ImportHTML能使表格从单元格A2中的网页链接中抓取信息。

“table”指令则会自动寻找表格。接下来的几个数字:1代表搜索到的第一个表格,33指的是该表格的第33行,2指该表格的第2列。

Substitute(“替换”)跟数据抓取的最后一步有关。它的作用是告知爬虫,如果遇到用星号标注的数据,要把星号替换成“ ”里的内容。而在这个例子里无需替换,因为涉及的数据没有星号标识。但也可用“%20”来替换空格字符,这样做能使浏览器工作更方便。

 

哪一行

要找到数据,我们要重新看回网站上的原始数据。右击鼠标,选择“查看源代码”,会得到以下这个页面:

airport-4

 

不要慌

用“Ctrl+F”搜索“complaints”(投诉)。

airport-5

你能看到下一行写着“第33行”,而紧接在“第二列”之后的,就是我们需要的实际数据。

airpot-6

以同样的方法我们可以得到第34行的数据。我们把公式复制到毗邻的D列时要改动行数。

 

复制到所有日期

如果你要把每天数据的URL链接复制到A列的话,那就跟你手动来查差不多啦。

每个日期的URL都有一样的开头,即http://hearthrowoperationaldata.com/

因此,我们可以先从运作数据网页右侧的下拉菜单中复制这些日期,然后把它们粘贴到B列。

airport-7

接下来回到A列。在该列中,我们输入以下公式:

= “http://hearthrowoperationaldata.com/”&B2

这个公式会把每日数据相应的URL补充完整,生成有效链接。

airport-8

然而你会注意到,先前复制过来的日期、月份和年份都是以空格分开的。而在URL链接中,我们需要用短划线(-)来作分隔,否则URL就无法打开。如何用短划线替换空格见下图。

airport-9

如此,你便可以在A列中下拉复制公式,这样就能得到每一天数据的URL。

这一步完成后,爬虫就能行动起来,开始填充整张表格了。

 

证信息准确无

牢记要彻底检查你的发现。

爬虫能够帮你收集到以同一形式储存的信息,但如何确保那些信息准确可靠,就要看你个人了。

此外,尝试即兴展示你独立做成过一次的事情,与书写及报道新闻一样,对沉淀经验十分有用。

 

 

编译/梁思然

编辑/Ivan Zhai


daniel-wainwright-140x140Daniel WainwrightBBC News Online的数据记者。

本文首发于网络新闻博客(Online Journalism Blog)。深度网经授权转载。

您可以根据知识共享协议条款免费转载这篇文章

转载


阅读更多

GIJN 十问

GIJN 十问:一位加沙调查记者的工作与生活

加沙战争从去年10月爆发以来,加沙地带230万人口中约有80%流离失所,许多人依然生活在极其恶劣的条件下。我们采访了一位居住在加沙的调查记者,讨论了他如何在令人恐惧、生命受到威胁的环境下,是如何生存和工作的。