2014-07-24 11 views
38

Ho un processo in Talend, che ottiene il risultato della ricerca di una pagina, salva il codice HTML e lo scrive in file, come si vede qui:Come analizzare i dati in Talend con Java (provenienti da un file .txt prodotto in precedenza)?

enter image description here

Inizialmente ho avuto un processo in due fasi, con l'analisi la data dai file HTML in Java. Ecco il codice: funziona e lo scrive in un database mysql. Ecco il codice che fondamentalmente fa esattamente questo. (Io sono un principiante, mi spiace per la mancanza di eleganza)

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); 
     } 
    } 
} 

Ora voglio fare l'end-to-end processo in Talend, e mi sono assicurato che questo funziona. Ho provato questo (che sembra abbastanza ombreggiato per me): enter image description here

Fondamentalmente ho messo tutte le importazioni in "Impostazioni avanzate" e il codice nella sezione "Impostazioni di base". Questa importLibrary è pensata per caricare la libreria di analisi jsoup, così come la connessione mysql (potrei comunque connetterti con gli strumenti di Talend).

Ovviamente questo non funziona. Ho provato a spogliare il codice base dalle classi e roba ed è stato anche peggio. Puoi aiutarmi come ottenere qui i file .txt generati analizzati con Java?

EDIT: ecco il link al Talend Job http://www.share-online.biz/dl/8M5MD99NR1

EDIT2: ho cambiato il codice a quello che ho provato in JavaFlex. Ma non ha funzionato (la parte di importazione nella parte iniziale del codice, il resto in "body/main" e nulla in "end".

+1

Controllare tJAvaflex invece di tjavarow, vi aiuterà –

+3

si può mostrare i vostri errori e per favore se si potesse ospitare la zip? il tuo lavoro e tutte le sue dipendenze potrebbero rendere il debugging ancora più semplice, inoltre sarei probabilmente incline a strappare quel codice DB e utilizzare invece un connettore Talend DB appropriato. – ydaetskcoR

+3

Nessun problema con l'eleganza, ma la stampa successiva Ctrl + Alt + F per e su eclipse, per formattare il codice :). – alkis

risposta

1

Questo è un problema relativo a Talend, nel tuo codice, utilizzare . i nomi dei metodi completi, compresi i loro pacchetti per il documento di analisi, ad esempio, è possibile utilizzare:

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