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
版权声明:本文为博主原创文章,转载请附上博文链接!
Kettle (5) - 获取 Web 数据的更多相关文章
- 传递多个参数并获取Web API的数据
近段时间学习Web Api觉得非常有意思.默认的路由情况之下,获取数据时,它不必指定Action操作名. 还有另外感想,就是自从学习asp.net MVC之后,加上jQuery,让Insus.NET已 ...
- Xamarin.Android 调用Web Api(通过ListView展示远程获取的数据)
xamarin.android如何调用sqlserver 数据库呢(或者其他的),很多新手都会有这个疑问.xamarin.android调用远程数据主要有两种方式: 在Android中保存数据或调用数 ...
- pyhton 从web获取json数据 保存到本地然后再读取
从web中获取json数据直接进行处理总认为太慢.主要是从web中获取获取数据的过程有点慢. 所以就在想 假设先利用空暇时间把json数据获取并保存到本地,然后再从本地文件里读取和操作.应该就要快非常 ...
- SpringBoot web获取请求数据【转】
SpringBoot web获取请求数据 一个网站最基本的功能就是匹配请求,获取请求数据,处理请求(业务处理),请求响应,我们今天来看SpringBoot中怎么获取请求数据. 文章包含的内容如下: 获 ...
- [转]WEB页获取串口数据
本文转自:https://www.cnblogs.com/rockyhm/p/3434200.html 最近做一个B/S的项目,需要读取电子秤的值,之前一直没做过,也没有经验,于是在网上找到很多 大 ...
- WEB页获取串口数据
最近做一个B/S的项目,需要读取电子秤的值,之前一直没做过,也没有经验,于是在网上找到很多 大致分两种 使用ActiveX控件,JS调用MSCOMM32.dll的串口控件对串口进行控制 使用C#语言 ...
- asp.net三层架构 及其中使用泛型获取实体数据介绍
asp.net中使用泛型获取实体数据可以发挥更高的效率,代码简洁方便,本例采用三层架构.首先在model层中定义StuInfo实体,然后在 DAL层的SQLHelper数据操作类中定义list< ...
- 【转】如何在Windows+VS2005使用最新静态libcurl 7.35.0获取网页数据,支持HTTPS
地址: http://blog.csdn.net/hujkay作者:Jekkay Hu(34538980@qq.com)关键词:Windows,curl,ssl, visual c++ 2005, ...
- ASP.NET Web数据控件
ASP.NET Web数据控件 1.数据控件简介 这包括数据源控件和格式设置控件,前者使您可以使用 Web 控件访问数据库中的数据,后者使您可以显示和操作ASP.NET 网页上的数据. 2.数据控件 ...
随机推荐
- 用 Excel 画正态分布曲线
用 Excel 画正态分布曲线 群里有小伙伴询问一道曲线题,有小伙伴看出来是正态分布曲线,刚好之前有大概了解一下正态分布. 可以在 Excel 很容易实现. 使用 NORMDIST 即可. 效果如下:
- Docker Compose(八)
Docker Compose 是Docker官方编排(Orchstration)项目之一,负责快速在集群中部署分布式应用. Dockerfile可以让用户管理一个单独的应用容器:而Compose则 ...
- php 字符串固定长度,不够补充其他字符串
<?php $input = '456'; $var= str_pad($input,5,10,STR_PAD_LEFT); w3school手冊:http://www.w3school.com ...
- 第一章 C#入门 (Windows窗体应用程序)(三)
[案例] 编写一个Windows窗体应用程序,窗体上有一个文本框和两个按钮([显示]和[清除]按钮). 单击[显示]时,文本框的背景变为蓝色并且居中显示“努力学习C#”: 单击[清除]按钮,文本框的背 ...
- TF(1): 基础理论
TensorFlow最初由Google大脑的研究员和工程师开发出来,用于机器学习和神经网络方面的研究,于2015.10宣布开源,在众多深度学习框架中脱颖而出,在Github上获得了最多的Star量.T ...
- ThinkPHP模板的知识
php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...
- 学习 Hadoop3.0 一、Hadoop3.0的安装与配置
一.JDK1.8的安装 添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 安装Oracle-java-ins ...
- 廖雪峰Java7处理日期和时间-3java.time的API-2ZonedDateTime
ZonedDatetime = LocalDateTime + ZoneId ZonedDateTime:带时区的日期和时间 ZoneId:新的API定义的时区对象(取代几句的java.util.Ti ...
- 解决Error:Could not determine the class-path for interface com.android.builder.model.AndroidProject.
见https://blog.csdn.net/qq_21397217/article/details/65630730博客
- sql使用实例
将另一表中的合计值保存到指定字段,并将空值赋0 update ShopInfo set JLRunningWater =(select COALESCE(sum(v.TotalMoney),0) as ...