import.io Cover

複製、貼上… 你還在手動爬資料嗎?類似 Kimono , import.io 同樣幫程式苦手爬網站的資料,但 import.io 與 Kimono 不同的地方在於: import.io 讓你一鍵搞定!這次小編就帶大家來看看 import.io 提供了什麼樣的功能吧!

資料分析盛行的這個年代,「砍站」的動作也開始流行了起來;網頁本身也是資料的一種,但往往我們需要的是網頁裡面的數據,也就是精鍊過的資料。

結構化的網頁格式讓程式化資料截取變成可行,但即使現在幾乎所有領域都需要做資料分析,程式設計技能也並不是所有人都具備的,因此爬蟲服務如雨後春筍的一個個冒了出來。

import.io 直接在他們的首頁提供了輸入框讓我們輸入想爬取的網址,網址送出後結構化資料很快就傳便便,不愧是一鍵爬資料:

import.io Example 1

爬取 Yahoo 拍賣搜尋「史萊姆」的結果

上例為 Yahoo 拍賣搜尋「史萊姆」的結果,圖片、連結、直購價、剩餘時間、運費、所在地等欄位全都預先幫我們準備好了 ( 因為表格很長,上圖只顯示部份 ) ,同時翻頁也做好,只要按「Next Page」就可以自動截取下一頁,完全不需要我們煩惱!

截取後的資料我們可以透過 API 的方式使用,或是直接下載 CSV 檔,下載 CSV 檔時要指定想要截取的頁面數:

Get CSV

下例是利用 Google Spreadsheet 開啟下載後 CSV 的樣子:

View CSV in Google Spreadsheet

使用 import.io API

若我們在搜尋之後選擇右下角的「Get API」, import.io 會將這次的搜尋儲存至我們的帳號中 ( 如果尚未登入則會彈出一個登入提示對話框 ) ,接著我們便可以看到 API 接口的詳細資訊。除了一般的 HTTP 接口 API 外, import.io 也提供了 Google Spreadsheet 專用的載入指令,以及 plot.ly 圖表製作工具的銜接指示!

在 Google Spreadsheet 部份, import.io 簡單的利用了 Google Spreadsheet 的「importHtml」指令,讓我們只要貼上 import.io 提供的指令串就可以得到類似上面開啟 CSV 的結果,也就是不再需要另外下載、上傳 CSV 檔:

Open in Google Spreadsheet

我們同時也可以點擊左下角的「Open Spreadsheet」,在同意讓 import.io 存取 Google 帳號後, import.io 便會自動幫我們把資料丟進 Google Spreadsheet ,相當方便。

搭配 Plot.ly 快速完成視覺化

今年一月初 import.io 與 plot.ly 正式宣布合作,讓 import.io 可以把資料直接匯出到 plot.ly 圖表工具中,彼此的方便性都在更上了一層。

要利用 plot.ly,我們先點選「Plot.ly」頁籤,這裡除了基本教學影片外,也可以勾選欲匯出的資料欄位。選取想要用來視覺化的欄位後接著點選「Export to Plot.ly」即可將資料匯出至 Plot.ly:

Export to Plot.ly

匯出資料時 Plot.ly 可能會要求我們登入,如果尚未註冊則需要先註冊,但基本上都是免費的,不用擔心無法註冊。資料一旦匯入,我們便可以利用匯入的資料來做圖表,下圖為我們利用 Plot.ly 製作史萊姆相關商品價錢的散佈圖: ( 如果沒有接觸過 Plot.ly 可以參考我們先前分享的 Plot.ly 介紹:「看過圖表社交平台嗎? - 使用 plot.ly 製作圖表」一文。 )

pricing

可以看到大部份的史萊姆相關商品價錢都在 10000 元以下,只有三個超過 10000 元,其中一個高達 60000 ! ( 據雅虎拍賣的生態來看,接近 0 元與高達 6 萬元的商品可能都是為了在搜尋排序上有更高的曝光率而設。 )

如果不包括登入、註冊的話,從貼上網址到圖表產生,一共按了不到 10 下滑鼠!想想若完全手動要生成這樣的圖表要花多少時間:撰寫爬蟲、執行、資料整理、使用 D3.js 等函式庫繪圖 . . . 光用想的就頭大,真的忍不住要感謝人類科技的進步呢。

import.io Extractor

很遺憾,天底下沒有這麼完美的事。import.io 的程式自動分析網頁結構來截取資料仍然有其極限,比方說碰到 Ajax 型態動態生成的網頁時,全自動資料截取就會破功。 import.io 提供了進階的客製化功能「Extractor」、「Crawler」以及「Connector」,我們可以透過 import.io App 來使用這些功能:

Install import.io

下載 / 安裝 import.io 應用程式

安裝好 import.io App 後直接開啟,可以看到 App 本身其實就是一個網頁瀏覽器,預設開啟的頁面是我們在 import.io 網站的個人入口頁面:

import.io Application

若要客製進階版的網頁分析,我們可以在左上角的「New …」 下拉選單中選擇想要的類型,包括:

  • Extractor - 從一頁中取出資料
  • Crawler - 從整個網站取出資料
  • Connector - 從網站中取出資料,且包含互動的部份

舉例來說,假設我們想要從 amazon 網站取得 metal slime ( 金屬史萊姆 ) 的商品資訊,直接將相關連結貼至 import.io 首頁搜尋框的結果並不盡理想,應該有十筆以上的結果但我們只得到了四筆結果,這時我們就可以利用 import.io app 的「Extractor」從網頁取出資料。

要使用 Extractor,首先開啟 import.io App ,新增「Extractor」後將在 amazon 搜尋「meta slime」結果的網址貼到網址列中,然後點擊左上方的「OFF」切換至「ON」:

app-extractor

這時會先產生一組預設的欄位分析結果,當我們對結果不滿意時可以點擊右上角的列表按鈕 ( 鈑手左邊那一個 ) 來開始「訓練」分析程式。

訓練的方式不複雜,類似 Kimono 的做法,我們透過在下方的網頁中點擊相關內容來訓練分析程式取得更好的分析結果。預設分析結果中的欄位不足時,也可以點上方的「New Column」按鈕來增加欄位,再另外進行訓練。

一切都完成後,點擊右上方的「DONE」,再為這個 API 命個名就完成了,未來若再碰到分析不精準的問題,隨時可以回來重新調整分析程式。

以上大致上就是 Extractor 的使用方法。除了 Extractor , import.io 還有提供 「Class Extractor」、「Crawler」與「Connector」,項目相當多無法在此一一介紹完畢,不過 import.io 在操作過程中的使用說明還算清楚,大家可以自己嘗試玩玩看囉!


結語

與 Kimono 相比,import.io 有個很不錯的優勢在於:預設的分析結果很可能就是我們想要的內容。這時若使用 Kimono 則免不了要自行點選相關欄位,也得另外安裝 bookmarklet 或 Browser Extension ,比起 import.io 稍微麻煩了一些。

不過,其實仍然有不少內容是 import.io 無法自動搞定的,舉例來說,信義房屋的頁面使用 import.io 是沒辦法拿到正常資料的:

信義房屋截取結果

而與信義房屋打對台的永慶房屋則可以取得結果:

永慶房屋結果

在這種情況下,我們必須透過 Extractor 來做分析程式訓練,而這部份相比 Kimono 的分析介面設計得比較直覺,小編認為是略勝 import.io 一籌的,因此使用 Kimono 在這種情況可能會比較方便。

另外,由程式動態生成內容的網頁也會有自動分析的問題,我們可以在進階版的分析工具中啟用 Javascript 來試著截取動態內容,不過小編至目前試過了幾個網站,感覺還不太給力,期待 import.io 未來的改版做得更好。

即便克服了這些問題爬到了資料,有些網站會針對大量資料截取行為做特別處理,例如擋 IP、throttling、 reCAPTCHA 等等的機制,像 Kimono 爬取永慶、信義網站就會爬一半卡住,import.io 是否有克服這類的問題?這就留待讀者們實戰時確認囉!


Written by infographics.tw

1 Comment

Nora

謝謝分享!!
樓主可以試試Octoparse(www.octoparse.com),也有你上面提到的所有強大的功能,可以寫個類似的對比文~~

Reply

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *