如何在Talend中使用Java解析(来自先前生成的.txt文件的)数据?

39

我在Talend中有一个流程,可以获取页面的搜索结果,保存HTML并将其写入文件,如下所示:

enter image description here

起初,我使用Java从HTML文件中解析日期的两步过程。以下是代码:它可以正常工作并将其写入mysql数据库。以下是基本上完成此操作的代码。(我是个初学者,对于缺乏优雅表示抱歉)

package org.jsoup.examples;

import java.io.*;   

import org.jsoup.*;
import org.jsoup.nodes.*;
import org.jsoup.select.Elements;

import java.io.IOException;


public class parse2 {       
    static parse2 parseIt2 = new parse2();
    String companyName = "Platzhalter";
    String jobTitle = "Platzhalter";
    String location = "Platzhalter";
    String timeAdded = "Platzhalter";

    public static void main(String[] args) throws IOException {
        parseIt2.getData();
    }

    // 
    public void getData() throws IOException {
        Document document = Jsoup.parse(new File("C:/Talend/workspace/WEBCRAWLER/output/keywords_SOA.txt"), "utf-8");
        Elements elements = document.select(".joblisting");
        for (Element element : elements) {
            // Parse Data into Elements
            Elements jobTitleElement = element.select(".job_title span");
            Elements companyNameElement = element.select(".company_name span[itemprop=name]");
            Elements locationElement = element.select(".locality span[itemprop=addressLocality]");
            Elements dateElement = element.select(".job_date_added [datetime]");

            // Strip Data from unnecessary tags
            String companyName = companyNameElement.text();
            String jobTitle = jobTitleElement.text();
            String location = locationElement.text();
            String timeAdded = dateElement.attr("datetime");

            System.out.println("Firma:\t"+ companyName + "\t" + jobTitle + "\t in:\t" + location + " \t Erstellt am \t" + timeAdded );
        }  
    }
}

现在我想在Talend中进行端到端的过程,并确信这将起作用。我尝试了这个(看起来相当可疑):基本上我把所有导入放在“高级设置”中,把代码放在“基本设置”部分。这个importLibrary被认为是加载jsoup解析库以及mysql连接的(虽然我可能要用talend工具连接)。显然这不起作用。我试图从类和其他东西中剥离基本代码,但情况更糟了。你能帮我如何在这里使用Java解析生成的.txt文件吗?编辑:这是talend作业的链接http://www.share-online.biz/dl/8M5MD99NR1编辑2:我已经将代码更改为我在JavaFlex中尝试的代码。但它没有起作用(开始部分的导入部分,其余部分在“body/main”中,没有在“end”中)。

1
请使用tJAvaflex而不是tjavarow,它会有所帮助。 - Balazs Gunics
3
请问您能否同时展示您的错误?如果您能够提供作业及其所有依赖项的zip文件,那么调试会更加容易。此外,我可能会倾向于删除该数据库代码,并改用适当的 Talend 数据库连接器。 - ydaetskcoR
3
优雅度没有问题,但下次在Eclipse中按Ctrl+Alt+F来格式化代码 :)。 - Alkis Kalogeris
1
你想分享你的输入文件吗?我想在我的端上测试它,以便给你更好的解决方案。 - UmeshR
1
您需要编写自定义的Java代码(包括所有导入语句)在一个例程中,然后直接在tMap组件中使用该例程中定义的函数(如果可能),或者在tJavaFlex组件中使用它。有关更多详细信息,请参见https://help.talend.com/display/KB/Creating+a+user+routine+and+call+it+in+a+Job。 - Incognito
显示剩余5条评论
1个回答

1

这是一个与Talend相关的问题,在您的代码中,请使用完整的方法名,包括它们的包。例如,在解析文档时,您可以使用:

Document document =  org.jsoup.Jsoup.parse(new File("C:/Talend/workspace/WEBCRAWLER/output/keywords_SOA.txt"), "utf-8");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接