給“編程小白”的數據抓取教程

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數據記者用爬蟲揭曉

想知道有哪些議員在“吃空餉”?自己寫一個爬蟲吧!

開放數據如何能造福中國?

Print Friendly, PDF & Email

發表回復

您的電子郵箱地址不會被公開。 必填項已用 * 標註