2014-07-24 31 views
38

mam proces w Talend który dostaje wynik wyszukiwarkę strony, oszczędza html i zapisuje je do plików, jak widać tutaj:Jak analizować dane w Talend z Java (pochodzące z wcześniej utworzonego pliku .txt)?

enter image description here

Początkowo miałem dwustopniowy proces z parsowania się z data z plików HTML w języku Java. Oto kod: Działa i zapisuje go w bazie danych mysql. Oto kod, który w zasadzie dokładnie to robi. (Jestem początkujący, przepraszam za brak elegancji)

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

Teraz chcę zrobić koniec-koniec procesu w Talend i mam pewność, to działa. Próbowałem ten (który wygląda całkiem zacienionych do mnie): enter image description here

Zasadniczo umieścić wszystkie importu w „Zaawansowane ustawienia”, a kod w sekcji „Ustawienia podstawowe”. Uważa się, że ta biblioteka importu ładuje bibliotekę parsowania biblioteki jsoup, a także mysql connect (mogę jednak połączyć się z narzędziami talend).

Oczywiście to nie działa. Próbowałem usunąć kod podstawowy z klas i innych rzeczy, a było jeszcze gorzej. Czy możesz mi pomóc, w jaki sposób uzyskać tutaj wygenerowane pliki .txt analizowane w Javie?

EDIT: Tutaj jest link do Talend Hioba http://www.share-online.biz/dl/8M5MD99NR1

EDIT2: Zmieniłem kod do jednego próbowałem w JavaFlex. Ale to nie zadziałało (część importowana w początkowej części kodu, reszta w "body/main" i nic na "końcu".)

+1

Sprawdź tJAvaflex zamiast tjavarow, to pomoże –

+3

można pokazać swoje błędy, a proszę, jeśli można hostować zip? Twojej pracy i wszystkich jej zależności, które sprawiłyby, że debugowanie byłoby jeszcze łatwiejsze. Prawdopodobnie byłbym skłonny wyrwać ten kod DB i użyć odpowiedniego złącza Talend DB zamiast. – ydaetskcoR

+3

Nie ma problemu z elegancją, ale następnym razem naciśnij Ctrl + Alt + F whil e na zaćmieniu, aby sformatować kod :). – alkis

Odpowiedz

1

Jest to problem związany z Talend, w kodzie, użyj . Pełne nazwy metod, w tym ich pakietów dla dokumentu parsowania na przykład, można użyć:

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