bestimmten HTML Code per JAva lesen lassen

Status
Nicht offen für weitere Antworten.
R

Renas

Gast
Guten Tag


Ich beschäftige mich erst seit kurzem mit Java. Hab also kaum ahnung davon, hoffe ihr helft mir trotzdem.

Mein Problem:

Ich möchte von einer Webseite den HTML Code gelesen habe und angezeigt bekommen, jedoch nicht den kompletten Code sondern nur bestimmte Wörter davon, hab meine schlauen Bücher durch geschaut - leider nur wenig hilfreiches gefunden. Auch google hat nicht zum erfolg beigetragen.



Zwar geht es um diesen Code, ich sitze schon etwas länger dran :oops: :



Code:
public class Suche extends Frame implements Runnable {
    Thread runner;
    URL page;
    TextArea box = new TextArea("läd Text ...");

    public Suche() {
        super("läd URL");
        add(box);
        try {
            page = new URL("http://www.google.com/");
        }
        catch (MalformedURLException e) {
            System.out.println("Bad URL: " + page);
        }
    }

    public static void main(String[] arguments) {
        Suche frame = new Suche();

        WindowListener l = new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        };
        frame.addWindowListener(l);

        frame.pack();
        frame.setVisible(true);
        if (frame.runner == null) {
            frame.runner = new Thread(frame);
            frame.runner.start();
        }
    }

    public void run() {
        URLConnection conn = null;
        InputStreamReader in;
        BufferedReader data;
        String line;
        StringBuffer buf = new StringBuffer();
        try {
            conn = this.page.openConnection();
            conn.connect();
            box.setText("Verbindung geöffnet ...");
            in = new InputStreamReader(conn.getInputStream());
            data = new BufferedReader(in);
            box.setText("lese Daten ...");
            while ((line = data.readLine()) != null) {
                buf.append(line + "\n");
            }
            box.setText(buf.toString());
        } 
        catch (IOException e) {
            System.out.println("IO Error:" + e.getMessage());
        }
    }
}


Grüße Renas
 

madboy

Top Contributor
Hi Renas,

kleiner Tip:

lass zum Testen die grafische Oberfläche weg. Wenn man nicht viel Ahnung hat, verwirrt das nur und man kann Fehler rein machen, die nix mit der Aufgabenstellung zu tun haben.


Code:
public static void main(String[] arguments) {
        URL page;
        try { 
            page = new URL("http://www.google.com/"); 
        } 
        catch (MalformedURLException e) { 
            System.out.println("Bad URL: " + page); 
        }

        URLConnection conn = null; 
        InputStreamReader in; 
        BufferedReader data; 
        String line; 
        StringBuffer buf = new StringBuffer(); 
        try { 
            conn = this.page.openConnection(); 
            conn.connect(); 
            System.out.println("Verbindung geöffnet ..."); 
            in = new InputStreamReader(conn.getInputStream()); 
            data = new BufferedReader(in); 
            System.out.println("lese Daten ..."); 
            while ((line = data.readLine()) != null) { 
                buf.append(line + "\n"); 
            } 
            System.out.println(buf.toString()); 
        } 
        catch (IOException e) { 
            System.out.println("IO Error:" + e.getMessage()); 
        } 
    }
}

Text finden kannst du mit String.indexOf(), Regex (java.util.regex.*) , String.contains(), ...

Gruß,
madboy
 
R

Renas

Gast
Hi madboy,

vielen dank für deine Anwort!

Habs jetzt mal versucht mit deinen Tipps[mit dem indexOF], nun wird nicht mehr der komplette HMTL code angezeigt sondern nur noch eine Zahl. Wenn das Wort gefunden wurde eine 3 bis 4 stellige Zahl(vermutlich zeilenangabe?), wenn nicht -1. Das möchte ich ja eingentlich nicht, sondern das der Suchbegriff ausgeben wird. Sorry hab nicht wirklich ahnung von Java :oops:
 

madboy

Top Contributor
Korrekt, indexOf() gibt den Index (die Position im gesamten Text) zurück.

Beispiel für Verwendung von indexOf zum Ausgeben eines Strings zwischen zwei anderen (das was du meiner Einschätzung nach tun willst):

Code:
String text = "das ist ein langer Text und ich will das Wort zwischen blubb und blablubb suchen"; //also "und" wird gesucht
int startIndex = text.indexOf("blubb");
startIndex = startIndex + "blubb".length(); // muss sein weil sonst "blubb und" rauskommt
int endIndex = text.indexOf("blablubb");

String gefundenerString = text.substring(startIndex, endIndex);
System.out.println(gefundenerString);

Nächstes Mal aber bitte erst die Forensuche/Google verwenden, da findet sich doch einiges :###

Gruß,
madboy
 

lava

Mitglied
Ich hab ein ähnliches Problem und ein paar Fragen zu madboys Code (bin ebenfalls Anfängerin, schreibe meine Fragen als Kommentare in den Quelltext):


Code:
public static void main(String[] arguments) {
        URL page;
        try { 
            page = new URL("http://www.google.com/"); 
        } 

// wieso muß das nicht             URL page = new URL ("....")          heißen??? 


        catch (MalformedURLException e) { 
            System.out.println("Bad URL: " + page); 
        }

        URLConnection conn = null; 
        InputStreamReader in; 
        BufferedReader data; 
        String line; 
        StringBuffer buf = new StringBuffer(); 
        try { 
            conn = this.page.openConnection();


// brauche ich hier wirklich ein this ??? 


 
            conn.connect(); 


// ist this.page.openConnectin().connect() nicht doppelt gemoppelt ?

            System.out.println("Verbindung geöffnet ..."); 
            in = new InputStreamReader(conn.getInputStream())
            data = new BufferedReader(in); 


// hätte ich das wie folgt abkürzen können: data = new BufferedReader(new InputStreamReader(new URLconnection page.openConnection().connect().getInputStream())   ?


            System.out.println("lese Daten ..."); 
            while ((line = data.readLine()) != null) { 
                buf.append(line + "\n"); 
            } 
            System.out.println(buf.toString()); 
        } 
        catch (IOException e) { 
            System.out.println("IO Error:" + e.getMessage()); 
        } 
    }
}

*Wildcard - Codetags eingefügt*
 

madboy

Top Contributor
Hi lava,

Ob das Beispiel funktioniert habe ich mir ehrlich gesagt nicht getestet/überlegt. Das wollte ich dem Fragensteller überlassen :wink:

Zu deinen Fragen:

Code:
        URL page; 
        try { 
            page = new URL("http://www.google.com/"); 
        } 

// wieso muß das nicht             URL page = new URL ("....")          heißen???
http://www.galileocomputing.de/open...02_003.htm#mj4d5e048998a23593cd7ec5d7131d5d3a

Code:
 conn = this.page.openConnection(); 
// brauche ich hier wirklich ein this ???
Nein, aber schaden tut es nicht.

http://www.galileocomputing.de/openbook/javainsel6/javainsel_06_001.htm#Xxx1007556

Code:
// ist this.page.openConnectin().connect() nicht doppelt gemoppelt ?
Stimmt. openConnection() reicht.


Code:
// hätte ich das wie folgt abkürzen können: data = new BufferedReader(new InputStreamReader(new URLconnection page.openConnection().connect().getInputStream())   ?
Nicht ganz.
Code:
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

Lass am Anfang aber lieber solche "Abkürzungen". Die sind schwieriger zu verstehen und auch Fehler lassen sich nicht so gut erkennen.

minimales Beispiel:
Code:
        try {
            URL url = new URL("http://www.google.de");
            URLConnection c = url.openConnection();

            InputStream inStream = c.getInputStream();
            InputStreamReader inReader = new InputStreamReader(inStream);
            BufferedReader buffReader = new BufferedReader(inReader);
            
            String line;
            while((line = buffReader.readLine()) != null) {
                System.out.println(line);
            }
            buffReader.close();
            
            } catch (MalformedURLException n) {
                n.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
Gruß,
madboy
 

HoaX

Top Contributor
je nach dem was du genau aus der seite holen willst könntest du auch httpunit/htmlunit verwenden. damit kann man schön direkt auf die html-elemente zugreifen.

bei großen seiten das gewünschte element finden geht leicht, z.B. mit firefox+firebug.
 
R

Renas

Gast
Ja funktionieren tuts schon, jedoch hat mad kleinen fehler reingemacht gemacht. Wenn ich mich recht entsinne - is schon ne weile her ^^.
Naja danke mad, is ungefähr das was ich wollte zumindesten kann ich jetzt weiter tüffelt das mit lenght funktioniert ledier bei meinen echten Prog nicht. Da das gesucht zufällig genergiert wird.
Sollte ich aber hin bekommen, falls nciht werd ich dich nochmal nerven :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Laden von bestimmten Daten aus TAR Archiv Allgemeine Java-Themen 23
M Datensatz auf ein bestimmten Parameter einzugrenzen Allgemeine Java-Themen 11
O Jar lässt sich auf bestimmten Pc nicht starten Allgemeine Java-Themen 18
kodela bestimmten Dateityp immer mit jar-Datei öffnen Allgemeine Java-Themen 17
I DOM-Parser - Element im Element an bestimmten Stellen auslesen Allgemeine Java-Themen 1
C Movement auf bestimmten Weg bestimmen Allgemeine Java-Themen 11
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
FrittenFritze Swing Apache Batik - Zoom an einer bestimmten Stelle Allgemeine Java-Themen 4
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
L Erste Schritte Java Date Format Pattern bestimmten Allgemeine Java-Themen 2
B Sprachdatei anhand von bestimmten Kriterien zerschneiden Allgemeine Java-Themen 0
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
A Fehlerhafte Nst Berechnung einer bestimmten Fkt. (Bisektion) Allgemeine Java-Themen 10
KilledByCheese String an bestimmten Stellen teilen Allgemeine Java-Themen 2
M Ein Programm das nur von einem bestimmten Programm geöffnet werden kann Allgemeine Java-Themen 7
V Klassenname von allen Klassen mit einer bestimmten Eigenschaft bekommen Allgemeine Java-Themen 2
C Generic-Funktion nur bei bestimmten Typen erlauben Allgemeine Java-Themen 6
H Bestimmte Aufgaben zur bestimmter Zeit/ in bestimmten Intervallen Allgemeine Java-Themen 3
E Tool um Methodenaufrufe aus bestimmten Pkg zu finden Allgemeine Java-Themen 2
S Methoden Stunden seit einem bestimmten Zeitpunkt Allgemeine Java-Themen 3
H Bestimmten Wert aus String parsen Allgemeine Java-Themen 7
J Ist eine Instanz von einem bestimmten Object Typ? Allgemeine Java-Themen 6
N Zahl mit bestimmter Länge und nur bestimmten Zahlen generieren lassen Allgemeine Java-Themen 7
T Sechsecke, erkennen von bestimmten Werten Allgemeine Java-Themen 9
A Excel nach bestimmten Inhalt durchsuchen Allgemeine Java-Themen 8
F Dynamisch ein Objekt einer bestimmten Subklasse erstellen Allgemeine Java-Themen 7
c_sidi90 Werte an bestimmten Position aus PDF in DB sichern Allgemeine Java-Themen 2
L Java TimeZone für bestimmten offset -> Bessere Möglichkeit? Allgemeine Java-Themen 2
L Sicherstellen das 2x die gleichen Daten unter bestimmten Keys enthalten sind. Allgemeine Java-Themen 6
H Bestimmten String mit Pattern und Matcher herauslesen => kein erfolg Allgemeine Java-Themen 9
T Javaprogramm unter Linux auf bestimmten Kern starten/laufen lassen ? Allgemeine Java-Themen 22
S JavaCC : SKIP Token nur für bestimmten Bereich ?? Allgemeine Java-Themen 2
B PDF lesen funktioniert bei bestimmten Dateien nicht mit pdfview Allgemeine Java-Themen 4
isowiz java.util.List: Sortierung nicht nach bestimmten Attribut? Allgemeine Java-Themen 4
D Ereigniss zur bestimmten Uhrzeit Allgemeine Java-Themen 3
Developer_X Ein Array nach einem bestimmten Attribut sortieren Allgemeine Java-Themen 3
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
B Scheduler soll bestimmten Job stoppen Allgemeine Java-Themen 4
J Jar zu einer bestimmten Uzeit Ausführen Allgemeine Java-Themen 8
Schandro Datei öffnen mit... Bestimmten Dateityp mit einen Java-Programm öffnen lassen Allgemeine Java-Themen 5
R Drucken über bestimmten Drucker Allgemeine Java-Themen 11
T Bestimmten Inhalt aus Manifest.MF auslesen Allgemeine Java-Themen 8
K Suche alle Objekte einer bestimmten Klasse Allgemeine Java-Themen 2
J Konstruktor-Aufruf nur aus einem bestimmten Package erlauben Allgemeine Java-Themen 5
R Ab bestimmten Trennzeichen linke Seite. Allgemeine Java-Themen 2
O Klassen mit bestimmten Interface finden Allgemeine Java-Themen 11
C Farbpunkt von einer bestimmten Fensterposition lesen Allgemeine Java-Themen 7
S installer mit bestimmten features? Allgemeine Java-Themen 2
N Dateien mit einer bestimmten Erweiterung suchen Allgemeine Java-Themen 9
M Problem mit bestimmten ASCII Codes Allgemeine Java-Themen 3
S addAtPosition - Zahl an einer bestimmten Position einfügen Allgemeine Java-Themen 8
M PDF-Datei nach einer bestimmten zeichenfolge durchsuchen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
S HTML einer Webseite 1:1 so bekommen wie es auch der Browser anzeigt? Allgemeine Java-Themen 14
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
F Kennt ihr eine Library um 2 HTML Seiten zu diffen? Allgemeine Java-Themen 8
K HTMLEditor HTML Text in Rich Text umwandeln Allgemeine Java-Themen 14
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Lottowebsite programmieren mittels Java, HTML,.... Allgemeine Java-Themen 7
S HTML den ich von einer URL hole nicht identisch mit dem HTML im Browser Allgemeine Java-Themen 1
M Html Seite auslesen Allgemeine Java-Themen 16
Developer_X Website HTML Code von HTTPS URL laden Allgemeine Java-Themen 0
L HTML Formular ausführen Allgemeine Java-Themen 1
J Auslesen Daten Java/HTML Allgemeine Java-Themen 15
A Applet in HTML einbinden Allgemeine Java-Themen 1
KeVoZ_ JSoup - HTML Tag entfernen Allgemeine Java-Themen 1
I HTML einer Website auslesen liefert nur head Allgemeine Java-Themen 6
perlenfischer1984 HTML Code decodieren Allgemeine Java-Themen 2
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
P HTML Text bearbeiten Allgemeine Java-Themen 1
A Probleme beim auslesen von Quelltext (HTML) Allgemeine Java-Themen 5
OnDemand String aus html einlesen Allgemeine Java-Themen 2
OnDemand Substring einer HTML Seite will nicht Allgemeine Java-Themen 5
S Applet in html laden; InvocationTargetException,.. nur warum ? Allgemeine Java-Themen 0
R HTML Tabelle durchsuchen Allgemeine Java-Themen 3
L Erste Schritte Eclipse und Lokal funktioniert - in HTML nicht! Allgemeine Java-Themen 2
T Keyword Highlighting in HTML Allgemeine Java-Themen 5
B Best Practice HTML Output Optimal implementieren Allgemeine Java-Themen 3
A jEditorPane Html Datei öffnen (code) Allgemeine Java-Themen 3
Y Applet/Html - Wie Java-Methode aufrufen, die einen Parameter erwartet? Allgemeine Java-Themen 3
H HTML Parsing errors Allgemeine Java-Themen 9
P Aktuellen HTML Code auslesen (von JS manipuliert) Allgemeine Java-Themen 3
M HTML-Code von Webseite über Browser oder Console auslesen?? Allgemeine Java-Themen 5
S Robuste Methode um Text von HTML code zu extrahieren..? Allgemeine Java-Themen 6
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
C JEditorPane langsam großes HTML Allgemeine Java-Themen 8
M html aus aktuellem Browserfenster mitlesen lassen Allgemeine Java-Themen 5
T Kann HTML Datei nicht lesen Allgemeine Java-Themen 3
S HTML-Quelltext nach bestimmter Stelle durchsuchen Allgemeine Java-Themen 2
B HTML Tags in Strings umwandeln Allgemeine Java-Themen 4
S BufferedReader/PrintWriter an einer HTML Allgemeine Java-Themen 6
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
C Attribute aus HTML Tags auslesen Allgemeine Java-Themen 6
M Wicket Html Allgemeine Java-Themen 2
S Fehler beim ausführen des HTML Allgemeine Java-Themen 7
S Fehler Applet-HTML Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben