Webseite wird nicht immer komplett ausgelesen

D

develman

Gast
Hallo,

ich schreibe ein Programm, welches Daten von Webseiten auswertet. Dazu möchte ich zuerst den Quellcode kopieren. Da kommen wir auch zu meinem Problem. Der folgende Code hat bei großen Seiten das Problem, dass er nicht immer die ganze Seite kopiert. Ich erkenne keine Struktur wann der Fehler auftaucht. Wenn ich die gleiche Seite 5 mal kopiere, so ist sie 2 mal komplett und 3 mal zur hälfte kopiert (immer an der gleichen Stelle).

Java:
public class Reader 
{
	public Reader(String url, String dateiname)
	{	
		try
		{
			URL seite = new URL(url);
			
			HttpURLConnection conn = (HttpURLConnection)seite.openConnection();
			conn.setRequestProperty("User-Agent", "");
			
			BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
			
			String inputLine;			
			PrintWriter pw = new PrintWriter(dateiname);
			
			while((inputLine = in.readLine()) != null)
			{
//				System.out.println(inputLine);
				pw.println(inputLine);
			}
			
			in.close();
			pw.close();
			conn.disconnect();
		}
		catch (MalformedURLException me) 
		{
			System.out.println(me);
		} 
		catch (IOException e) 
		{
			System.out.println(e);
		}
	}
}

Ich bedanke mich schon im Voraus für eventuelle Hilfe oder Vorschläge.
 
S

SlaterB

Gast
wie sieht es denn mit Zeile 19 aus, hast du getestet mit Ausgabe eingeschaltet?
kommt tatsächlich nach der Hälfte null aus in oder wird immer alles komplett eingelesen, nur die Weitergabe nach pw hat einen Fehler
(auch wenn das vom Code her nicht zu erkennen ist)?
 

ARadauer

Top Contributor
Mhn meiner Meinung nach sieht der Code gut aus. Passiert das nur bei einer Seite oder bei unterschiedlichen?

Habs jetzt mal getestet, bei mir funktionierts perfekt.
 
Zuletzt bearbeitet:
D

develman

Gast
Danke für den Tip...meine Erkenntnis ist, dass es jedes mal bis zum Ende speichert, allerdings sehr breite Zeilen (manchmal mehr als 20000 Zeichen) nicht komplett übernimmt. Da kürzt bzw. bricht es manchmal mitten in der Zeile ab und "vergisst" deb Rest der Zeile. Kann mir jemand erklären warum?

Zur Erklärung warum ich solch lange Zeilen habe: Ich benutze eine Suchfunktion von einer Seite im Netz die das Ergebnis in einer Zeile zurückgibt. Bei vielen Treffern kommen halt so lange Zeilen zustande.
 
D

develman

Gast
Ich muss mich leider nochmal verbessern. Sry für den Doppelpost.

Also Zeile 19 geht durch bis zum Schluss. Da gibts keine Probleme. Allerdings in der Datei bricht er ab, wenn er manchmal diese Monsterzeilen nicht packt.

So müsste das Problem beim Printwriter liegen. Hätte da jemand eine Idee?

MfG

Develman
 
S

SlaterB

Gast
direkt fällt mir nichts ein, hab im Moment auch keine IDE um im PrintWriter-Sourcecode nach Besonderheiten zu schauen,
ein flush() vorm close() wird nicht helfen, oder?

PrintWriter ist in jedem Fall nicht der neueste Stand der Technik, wie man an den Klassennamen erkennen kann wäre die saubere Variante
FileOutputStream, OutputStreamWriter, BufferedWriter und ähnliches

oder noch energischer den Code umstellen: du musst doch sowieso nicht als Reader einlesen und als Writer schreiben?
bleibe bei Streams, keine Interpretation mit Encoding, die reinen bytes lesen und 1:1 auf die Festplatte schreiben,
lies byte[] von z.B. 8192 bytes, dann sollte die Zeilenlänge keinen Einfluss haben, BufferedInputStream muss auch nicht sein

sobald die Datei gesichert auf der Platte liegt kannst du sie immer noch neu einlesen und neu speichern wenn nötig
 

ARadauer

Top Contributor
Interessant, wie lange ist so eine Monster Zeile oder hast du ein Beispiel für eine Webseite, wo es nicht geht?
Das könnte man einfach mal die java api debuggen
 
D

develman

Gast
Danke euch Beiden! Wie es aussieht habe ich das Problem gelöst. Zumindest ist es bisher nicht wieder erschienen.

Ich habe wie oben empfohlen den Printwriter ersetzt. Meine "neue" Schreibmethode sieht wie folgt aus:

Java:
		BufferedWriter bout = new  BufferedWriter(new OutputStreamWriter(new FileOutputStream("temp/" + dateiname)));
		while((inputLine = in.readLine()) != null)
			{
//				System.out.println(inputLine);
				bout.write(inputLine + "\n");
			}

Ich bedanke mich nochmals herzlich für eure schnelle Hilfe und frage an dieser Stelle:
Woran hätte ich erkennen können, dass der PrintWriter nicht der neuste Stand der Technik ist?

MfG

Develman
 
S

SlaterB

Gast
an einem Lehrbuch zum Thema oder einer sonstigen Übersicht der Klassen,
Input/Output-Stream + Writer/ Reader unterscheidet zwischen Bytes und Chars,
der Wortbestandteil davor könnte File, Buffered oder sonstiges sein,

'Print' steht außerhalb des Konzeptes, ist eine alte Vorversion, wobei in der neueren Implementierung nur der Name beibehalten werden muss, intern passiert weitgehend das gleiche,

vergleichbar mit Vector/ ArrayList,
ich wollte eigentlich nur Alter der Klasse betonen, hab nicht erwartet dass du das siehst, falls du dich das fragst
 
U

Unregistrierter

Gast
an einem Lehrbuch zum Thema oder einer sonstigen Übersicht der Klassen,
Input/Output-Stream + Writer/ Reader unterscheidet zwischen Bytes und Chars,
der Wortbestandteil davor könnte File, Buffered oder sonstiges sein,

'Print' steht außerhalb des Konzeptes, ist eine alte Vorversion, wobei in der neueren Implementierung nur der Name beibehalten werden muss, intern passiert weitgehend das gleiche,

vergleichbar mit Vector/ ArrayList,
ich wollte eigentlich nur Alter der Klasse betonen, hab nicht erwartet dass du das siehst, falls du dich das fragst
... gerade du als Moderator solltest es vielleicht lassen so einen Unsinn zu verbreiten, da das Leute evtl. für wahr nehmen was du da redest ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
I Vom Monolith zu Services in einer Webseite Allgemeine Java-Themen 1
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
S HTML einer Webseite 1:1 so bekommen wie es auch der Browser anzeigt? Allgemeine Java-Themen 14
Lukasbsc JDA-Bot Webseite aufrufen Allgemeine Java-Themen 0
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
L Echtzeitdaten aus einer Webseite ziehen mit Java Allgemeine Java-Themen 19
x46 Webseite in Java auslesen Allgemeine Java-Themen 2
M Login in eine Webseite mit Java Allgemeine Java-Themen 3
C Webseite auslesen Allgemeine Java-Themen 3
X HTTP Auslesen der Ergebnisse von einer Webseite und in eine Liste packen Allgemeine Java-Themen 1
L String von Webseite herunterladen Allgemeine Java-Themen 4
R Login auf einer SSL-Webseite Allgemeine Java-Themen 7
M HTML-Code von Webseite über Browser oder Console auslesen?? Allgemeine Java-Themen 5
L Jsp: Vorherige Webseite ermitteln Allgemeine Java-Themen 4
D Java Script webseite Asufüllen Allgemeine Java-Themen 3
X Applet läuft nicht, Applet in Webseite einbinden Allgemeine Java-Themen 4
I Webseite auslesen (welche mittels Javascript Inhalt einbindet) Allgemeine Java-Themen 4
U Servlet in Webseite einbinden Allgemeine Java-Themen 1
W Webseite öffnen und Link anklicken Allgemeine Java-Themen 2
T Zeit von einem Server/Webseite auslesen und in eigener GUI anzeigen Allgemeine Java-Themen 6
C Komponenten einer WebSeite Allgemeine Java-Themen 4
S Mittels eines Applets Bilder generieren die in einer Webseite angezeigt werden..? Allgemeine Java-Themen 8
Taschenschieber Webseite im Browser öffnen Allgemeine Java-Themen 3
L Session auf einer Webseite halten Allgemeine Java-Themen 6
G Mit Java und HTTPClient auf Webseite einloggen Allgemeine Java-Themen 4
T Webseite (HTML) Parser gesucht Allgemeine Java-Themen 8
D Bilder einer Webseite herunterladen Allgemeine Java-Themen 2
M Webseite speichern Allgemeine Java-Themen 3
R Von Java aus Browser Fenster oeffnen und Webseite ausgeben? Allgemeine Java-Themen 2
U Communityfunktionen für vorhandene Webseite Allgemeine Java-Themen 2
S Webseite auslesen Allgemeine Java-Themen 20
L Anfrage an eine Webseite Allgemeine Java-Themen 5
S Fehler beim Einlesen einer Webseite mit 1.4 Allgemeine Java-Themen 3
C Webseite laden aber mit Cookie Allgemeine Java-Themen 2
A "Webseite-Inhalt" ins Arabische&Französische ü Allgemeine Java-Themen 2
T Webseite öffnen per Knopfdruck Allgemeine Java-Themen 2
S Über ein String eine Webseite in eine Datei umleiten Howto? Allgemeine Java-Themen 8
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Y MVVM wie wird Eventhandler tausch geregelt Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
N warum wird es doppelt ausgegeben Allgemeine Java-Themen 6
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Y Warum wird das JLabel falsch verschoben? Allgemeine Java-Themen 1
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
M Frage-Antwortspiel wie Wer wird Millionär Allgemeine Java-Themen 1
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
R Was muss ich ändern, damit der Kreis links unten gezeichnet wird? Allgemeine Java-Themen 17
hello_autumn Java_Home geändert auf Java 13, trotzdem wird Java Version 8 angezeigt. Allgemeine Java-Themen 2
Thallius Char +1 wird int? Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
F Scrollbar wird nicht angezeigt Allgemeine Java-Themen 0
B Discord Bot - Funktion wird nicht aufgerufen Allgemeine Java-Themen 1
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
S If-Menü wird doppelt ausgegben Allgemeine Java-Themen 4
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11
S Wird bei den JREs 9, 10, 11+ ueberhaupt noch Bytecode ausgefuehrt..? Allgemeine Java-Themen 8
FRI3ND JFrame wird nicht angezeigt Allgemeine Java-Themen 3
T Plötzlich wird package nicht mehr gefunden Allgemeine Java-Themen 3
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
mrbig2017 Sleep wird ignoriert und der Thread wartet nicht Allgemeine Java-Themen 1
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
kodela Klassen Klassenvariable wird nicht gesetzt Allgemeine Java-Themen 23
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
kodela Drücken der ALT-Taste wird nur bei jedem zweiten Mal erkannt Allgemeine Java-Themen 5
Arif Input/Output Serialisierung - Datei wird nicht erzeugt Allgemeine Java-Themen 3
D Cursor unsichtbar, wenn Kontextmenü aufgerufen wird Allgemeine Java-Themen 5
K Arbeitsspeicher wird langsam voll Allgemeine Java-Themen 6
The Pi Wie oft wird ein Buchstabe in einem Wort wiederholt? Allgemeine Java-Themen 16
N Datentypen If-Statement wird "übersprungen" Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
T Java wird nicht gefunden Allgemeine Java-Themen 32
Tacofan GIF-Bild wird "zerstört" Allgemeine Java-Themen 3
Z Exception wird nicht ausgelöst Allgemeine Java-Themen 2
Sin137 Interface Eingabe wird doppelt angezeigt Allgemeine Java-Themen 2
B Threads Timer wird immer schneller Allgemeine Java-Themen 6
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
G Methoden Aus einem Event, wo ich weiß, dass es ausgeführt werden wird, eine Get-Methode basteln Allgemeine Java-Themen 8
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
U Erkennen, ob PC benutzt wird Allgemeine Java-Themen 4
O Programm wird einfach "gekillt" Allgemeine Java-Themen 3
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben