给“编程小白”的数据抓取教程

Print More

数据抓取往往是信息可视化制作的入门功课,但由于编程是它的基础,这不免让技术薄弱的记者朋友无从下手。独立调查记者、数据新闻记者Samantha Sunne对这种情况了如指掌,所以在NICAR的2018年会议中,她为“编程小白”们设计了一套简易教程。

一句话概括,数据抓取就是从网页中把你想要的数据扒下来并整合在一起的操作。数据抓取技术人员有两种称呼,一个是Extractor,一个是Crawler,前者是从单个网页上扒数据,后者是多个。


不管我们的编程知识掌握多少,还是要对HTML有个基本认识。HTML是一种标记语言,能够被网页读取,通常情况下,我们能看到的网页界面是这样的:

这是网页读取并可视化后的结果。HTML是如下图,对于“编程小白”们来说,这就是一团不知名字符。

但其实,有时人类也能读懂它的语言。老布什的次子杰布·布什曾在他的竞选网站上发表参加2016总统选举的声明,然而发表不到一天,一名《纽约时报》的记者就发现,此声明的页面代码中竟被插入了电影《虎胆龙威》的情节概述。这部影片的英文名称叫“Die Hard”。

这只是个隐蔽的玩笑,言归正传。

深度君接下来要介绍Sunne提及的利器之一:使用Google电子表格的IMPORTHTML公式来抓取数据。

HTML的内容一般被包裹在标签里,如<>content content</>

有些标签很直观,比如说“表格”:

<table>
Here is my table, right here inside these table tags.
</table>

你想把一个页面上的表格扒下来,可以求助下面这个公式:

=ImportHTML(“url”, “element”, number of element)

“url”是这个页面的链接;

“element”指的是HTML标签,比方说“表格”;

number of element指的是在这个页面中,目的标签的序列。

温馨提示:HTML有很多标签,甚至同样的标签内容也会有不同的缩写,需要时,你就得求助HTML字典了。字典链接:https://www.w3schools.com/tags/

 

来举两个具体的例子。

例1.

运用上面提到的公式,我们试试把网站sample.com上的第一个表格抓取出来。

=importHTML(“sample.com”,”table”,0)

用上面这行公式就能完成了。需要注意的是,“0”代表的是电脑语言的第一个,以此类推。

同样,如果不清楚你扒的数据的标签和序列具体是什么,可以单击右键,从源代码中把它们找出来。

例2.

假设我们想从IRE(调查记者与编辑协会)的招聘职位列表页面中,把所有的空缺职务扒下来。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

那么已有的信息为:

url: https://www.ire.org/jobs/

标签:table

在Google Sheets公式栏输入:=IMPORTHTML(“https://www.ire.org/jobs/” , “table”),表格即可自动导入。

这个公式还能用于导出网页的列表(lists),但是要注意,这个公式提取出的只是本页面上出现的第一个列表。如果你不能确保这个页面上有列表,请查看源代码(Ctrl+F),查找关键词“<li>”。

这个方法是不是非常简单呢?除了以上这些手动操作,深度君还集结了一个自动抓取数据的工具清单,以适应不同类型的数据抓取需求:

这是一个桌面应用程序,可以自动检测出页面中你需要的HTML标签,并抓取出来。

在静态网页上抓数据方面,可能没有其他应用程序能超过此神器了。它适用于在非常简洁的页面上抓取数据。

这是个火狐浏览器的插件,可以高亮出页面中的所有网址和图片,并把它们下载下来,但它功能不如Outwit Hub强大。

正在数据抓取入门阶段挣扎的同学们,赶紧上手试试吧!更多资源可以访问全球深度报道网(cn.gijn.org),在“资源库”一栏查看哦!此外,深度网还会精选出时下最新最好用的工具,在每周简报里推送给读者们,点击原文订阅链接。

 

编译/Lizzy Huang

编辑/Ivan Zhai

相关阅读:

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

想知道有哪些议员在“吃空饷”?自己写一个爬虫吧!

开放数据如何能造福中国?

Leave a Reply

Your email address will not be published. Required fields are marked *