Erste Schritte Konsolenausgabe in Datei umleiten

jofri

Mitglied
Hallo,

ich möchte von einer Website den Quellcode auslesen und in eine Dateischreiben um diese dann später nach den bestimmten Manschaften zu suchen. Zum auslesen habe ich schon folgendes gefunden:
Java:
package paket1;


import java.net.URL;
import java.util.Scanner;

public class Klasse1 {

    public static void main(String[] args)
           
            throws Exception{
        Scanner scanner = new Scanner(new URL("http://www.sis-handball.de/web/Mannschaft/?view=Mannschaft&Liga=001515501501000000000000000000000068008").openStream());

while(scanner.hasNextLine()){
           System.out.println(scanner.nextLine());
       }
     scanner.close();

       
    }

}

Allerdings landet es jetzt nur in der Konsolenausgabe, ist ja auch logisch. Aber wie bekomme ich diese jetzt in eine Datei?


Danke schonmal 🙂,
jofri
 
Ungefähr so müsste das gehen 😀

Java:
Bufferedwriter writer = new BufferedWriter(new FileWriter("Datei"));

writer.write(text);
 
Kannst auch deinen System.out in eine Datei pipen:
Code:
java MyProgram > output.txt
 
Okay ich habe den Quellcode der website in einer .txt Datei. Wie kann ich nun am besten die Manschaften mit jeweiligen Gegner herausfiltern?
 
Das geht ein wenig weiter als dieser Thread ahnen lässt.
Wenn du wirklich effektiv Daten aus einer HTML-Seite parsen möchtest dann kommst du nicht um JSoup herum. Das wiederum ist keine Anfängerangelegenheit!
 
Habe mir jetzt JSoup eingebunden. Im Cookbook von JSoup steht allerdings nur wie man Websites "parst".
Wie funktioniert das bei Textdateien?
 
https://jsoup.org/cookbook/input/parse-document-from-string


Ich habe noch nie mit JSoup gearbeitet, aber auf deren Website https://jsoup.org/cookbook/input/parse-document-from-string steht folgendes Beispiel:
Code:
String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);

Wenn du den HTML Code schon in deinem Code vorliegen hast, bräuchtest du ihn gar nicht mehr abzuspeichern.
 
Okay ich habe nun folgendes zum Filtern heraus gefunden:

Java:
package paket1;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.JOptionPane;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class WebsiteParser {

   
    public static void main(String[] args){


       
        String html= "<html><head><title>First parse</title></head>"
                  + "<body><p>Parsed HTML into a doc.</p></body></html>";
        Document doc = Jsoup.parse(html);
        JOptionPane.showMessageDialog(null,html);
       
       
    }

}

Hier kommt folgende Ausgabe:
Code:
Parsed HTML into a doc.


Nun habe ich HTML Code von der Website eingefügt allerdings zeigt er mir jetzt nicht nur die Manschaften an:
Java:
package paket1;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.JOptionPane;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class WebsiteParser {

   
    public static void main(String[] args){


       
        String html= "<td><b><a style=\"color:#272829;\" href=\"../?view=Mannschaft&Liga=001515501501000000000000000000000068007\">HG Rosdorf-Grone</a></b></td>"
                  + "<td><a style=\"color:#272829;\" href=\"../?view=Mannschaft&Liga=001515501501000000000000000000000068008\">JSG Elm</a></td>";
        Document doc = Jsoup.parse(html);
        JOptionPane.showMessageDialog(null,html);
       
       
    }

}

Code:
<td><b><a style="color:#272829;" href="../?view=Mannschaft&Liga=001515501501000000000000000000000068007">HG Rosdorf-Grone</a></b></td><td><a style="color:#272829;" href="../?view=Mannschaft&Liga=001515501501000000000000000000000068008">JSG Elm</a></td>


Was ist beim ersten Beispiel anders als beim Zweiten?
 
Du nutzt das noch nicht richtig. Du zeigst lediglich den html Code im JOptionPane an. Dass du beim ersten Beispiel nichts von den HTML Tags siehst, kommt daher, dass man die Anzeige des JOptionPane per HTML stylen kann.
Beim zweiten Beispiel gibst du der JOptionPane aber keinen kompletten HTML Code. Darum kann er das dann nicht vernünftig rendern und gibt nur den kompletten String (so wie er ist) aus.
Will heissen: Wenn das JOptionPane den übergebenen String per HTML gestylt anzeigen soll, muss der HTML Code einigermassen valide sein. Bei kurzen Tests habe ich festgestellt, dass der String wenigstens mit einem "<html>" anfangen muss...

Aber das ist ja sowiso nicht was du willst, oder?
Du willst doch gezielt auf Informationen des von JSoup geparsten Documents zugreifen. Dazu musst du dich schon bei diesem bedienen. Das hast du ja auch schon in der Variablen "doc" gespeichert.
Wie man da nun die Informationen rausholt kann ich dir leider nicht sagen, da ich mit JSoup noch nicht gearbeitet habe.
 
Also das JOptionPane habe ich nur zur Ausgabe genutzt. Hätte genau so gut ein System.out.println benutzen können. Nun einmal was ich letztendlich will: Auf der auszulesenden Website ist eine Tabelle mit Manschaften. Die Informationen aus der Website möchte ich auslesen und in einer Tabelle gelistet haben. Villeicht habe ich mich etwas überschätzt mit meinem können würde es aber trotzdem gerne umsetzen. Dachte es wär nicht ganz so kompliziert 😀 aber so ist es nunmal.
 
Was ich damit sagen wollte ist, dass das Aurufen von:
Code:
Document doc = Jsoup.parse(html);

Den String in der Variablen "html" nicht verändert. Dessen Inhalt befindet sich nun in aufbereiteter Form in der Variablen "doc". Du musst dir angucken, wie man mit so einem
Code:
org.jsoup.nodes.Document
umgeht.
 
Ne ich will das schon selber machen sonst bringt es mir ja nichts und ich kann es später nicht anwenden 😀 Aber habe bisher noch kein JSoup Tutorial gefunden nur für einzelne Beispiele Edit: @X5-599 Ich gucks mir gleich mal an 🙂
 
Hallo, wieso machst du nicht ein neues Thema auf - ein neues Thema, das gar nix mit dem Alten zu tun hat!

Wie lautet die zu verarbeitende Webseite?

Ich würd das auch gegen ein paar Geldscheine machen...
 

Zurück
Oben