PDI 勺步骤中的 HTML 抓取(用户定义的 java 类)
Posted
技术标签:
【中文标题】PDI 勺步骤中的 HTML 抓取(用户定义的 java 类)【英文标题】:HTML scraping in PDI spoon step (user defined java class) 【发布时间】:2014-08-28 18:51:40 【问题描述】:您好,我正在使用HTTP Client
步骤获取网站的源代码。我需要刮掉一行的特定部分。
示例行:<a href="....." ......>TEXT I WANT</a>
所以我想我会在 PDI 中使用 UDJC 并首先使用 String[] lines = code.split("\n+");
将文本块拆分为行,然后循环遍历数组并使用 if 条件(即正则表达式检查)查看我是否有正确的行。
for(String line : lines)
if line.matches(".*a href.*")
String outputString = code;
break;
(我也在作为没有 PDI 的纯 java 在 IDE 中尝试这样做)但我从来没有受到打击。知道如何解决这个问题吗?或者有没有更快更简单的方法来获取我想要的块?
【问题讨论】:
如果您的特定<a>
标记以某种方式可识别,我建议解析为 XML 并使用 XPath 来查找它。
【参考方案1】:
我在类似的情况下使用过滤步骤做一些你想做的事情
转换步骤:
-
使用字段“dom”生成行,键入字符串重要提示:限制应为 1
// pentaho 需要一个用于 https-step 的字段,在
以下步骤
http-step,获取 html-dump 并为其设置一个字段名“html”或类似的名称(也许状态码字段会很好)
// 检查是否有数据的预览
过滤步骤:http 包括
"<a href"
// 检查输出
javascript-Step 使用您的正则表达式*,使用您想要的输出定义一个新字段
* for the regex
【讨论】:
以上是关于PDI 勺步骤中的 HTML 抓取(用户定义的 java 类)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Pentaho 数据集成 (Kettle) 中的“用户定义的 Java 类”步骤中获取所有参数
PDI 步骤 MongoDB 输入 - $match 使用从上一步中的 MySQL 查询中获得的值