Kettle (5) - 獲取 Web 數據


使用 Kettle 獲取網頁數據。當然,這里的網頁數據主要指結構化數據,可能是 xml 格式、json 格式 或者 csv 文件等。以 http://services.odata.org/V3/Northwind/Northwind.svc/Products/ 為例,這是 odata 提供的符合 REST 規范的數據。通過這個 url 獲取的產品數據,默認為 xml 格式。我們將以該 url 演示如何獲取 xml 格式以及 json 格式的數據。

使用 Http Client 獲取網頁數據
本例通過 Http client 獲取網頁包括如下步驟:

 

 

第一步:通過「生成記錄」組件,將 url 保存到常量中

 

 

新建一個字段,名稱為 url,類型為 String,值為:

http://services.odata.org/V3/Northwind/Northwind.svc/Products/

第二步:通過「HTTP client」組件,獲取網頁的內容

 

 

將 url 獲取的內容,放在結果字段 result 中。

第三步:從 XML 獲取數據

我們知道通過這個 url 獲取的是 xml 格式數據,所以使用 「Get data from XML」組件。第三步有點復雜。

 

 

因為上一步輸出的字段為 result,所以本步驟 xml 源字段為 result。切換到「內容」頁簽。

 

 

解釋下「循環讀取路徑」。如果我們查看本例的目標網頁,我們發現有多筆數據:

 

 

所以要讀取所有的產品數據,就要用到循環,而且抓取到這些數據,需要用到 XPath 路徑,也就是 /feed/entry/content/m:properties。因為 XPath 中有 namespace,所以「考慮命名空間」選中。

切換到「字段」頁簽,在 /feed/entry/content/m:properties 這個路徑下,假設我們只需要三個字段:

 

 

第四步:使用「選取字段」組件,可以簡單的展示數據。

 

 

完成以上步驟后,運行,既可以獲取到數據,截圖如下。

 

 

獲取 json 格式數據
http://services.odata.org/V3/Northwind/Northwind.svc/Products/
提供的是 OData 服務,所以我們也可以通過參數 $format=json 來得到 json 格式的數據。然后用 HTTP Client 處理 json 數據。

Kettle 的處理步驟如下:

 

 

這里主要說明與處理 xml 數據有差異的部分。

第一步,生成記錄。url 的值多了一個參數:http://services.odata.org/V3/Northwind/Northwind.svc/Products/?$format=json。

第二步, Http Client,相同,沒有差異。

第三步,因為 HTTP Client 獲取的是 json 數據,所以用 JSON Input
獲取數據。主要區別在「字段」這個頁簽:

 

 

要獲取 ProductID, ProductName 和 UnitPrice 三個字段,使用的是 JSONPath
語法。這里不對 JSONPath 做過多說明。$..ProductID 表示獲取所有
ProductID 字段。關於 JSONPath,自行參考:http://goessner.net/articles/JsonPath/。
---------------------
作者:stone0823
來源:CSDN
原文:https://blog.csdn.net/stone0823/article/details/78823052
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM