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 查询中获得的值

比较 PDI 中的文件名

您可以在 Pentaho 数据集成 (PDI) 中动态设置固定文件输入列定义吗?

使用 Web 服务运行 PDI 作业

在 Java 上运行 PDI Kettle - Mongodb 步骤缺少插件