數據抓取往往是信息可視化製作的入門功課,但由於編程是它的基礎,這不免讓技術薄弱的記者朋友無從下手。獨立調查記者、數據新聞記者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
相關閱讀: