website auslesen schlägt fehl

s_poggie

Mitglied
Hi Jungs,
vielleicht könnt ihr mir bei einer sache weiter helfen bei der ich gerade ein wenig hänge.
Seit kurzem hat mtv wohl ne mtv mobile seite hinzugefügt.
da vermute ich nun mein Problem
ok folgender Sourcecode soll die Website die er bekommt auslesen und in einer Datei speichern.
z.B: :: MTV | Deutsche Dance Charts | charts

Seitenquelltext mit Firefox sagt:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>:: MTV | Deutsche Dance Charts | charts</title>
<link rel="meta" href="http://www.mtv.de/labels.rdf" type="application/rdf+xml" title="ICRA labels" />


Mein Sourcecode:

Java:
/**
	 * 
	 * @param req
	 *            URL der auszuwertenden Seite
	 * @param dateisp
	 *            Pfad der Datei
	 * @param neu
	 *            append oder write modus
	 * @return
	 * @throws Exception
	 */

	/*Bekommt URL [url=http://www.mtv.de]:: MTV | home[/url].......
	 * bekommt dateisp für dateinamen!!!(outgain.txt)
	 * soll hinterher in outgain.txt den inhalt der gesammten website
	 * schreiben!!!
	 * 
	 */

	public static boolean get(String req, String dateisp, boolean neu)
			throws Exception {

		if (dateisp.length() == 0) {
			return false;
		}

		String line = new String();// One line as reading buffer
		URL adr = new URL(req);
		adr.openConnection();// establish connection to url
		InputStream inp = adr.openStream();
		BufferedReader buff = new BufferedReader(new InputStreamReader(inp));// make
		// //
		// inputstream
		StringBuffer buffer = new StringBuffer();

		while ((line = buff.readLine()) != null) {// read the stream...
			buffer.append(line);
			buffer.append("\r\n");
		}

		System.err.println(buffer.toString());//ausgabe html auf console

		try {

			if (neu == true) {
				// write Modus
				File outputFile = new File(dateisp);
				FileWriter out = new FileWriter(outputFile);
				out.write(buffer.toString());// schreibe datei!!!
				out.close();
				outputFile.deleteOnExit();

			} else {
				// append Modus
				FileWriter out = new FileWriter(dateisp, true);
				out.append(buffer.toString());// schreibe datei!!!
				out.close();
				

			}

		} catch (Exception e) {
			System.err
					.println("File IO Problem " + dateisp + " nicht erstellt");
		}

		return true;

	}

HTML:
Meine Ausgabe: 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.openwave.com/dtd/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- Sevenval FITML 3 Processor 6.1.29  --><!--TradeDoubler site verification 1658888--><head><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/><title>MTV</title><style type="text/css"> .headersearchinput ....
    Â*


Der Code hat bis vor ein paar wochen einwandfrei funktioniert. Nun vermute ich aber das die Website dem Java Prog etwas anders liefert als mein Firefox bekommt. kann das sein?
Wie kann man das ändern?
Einer ne Ideeeeeeee?


Danke
 

Atze

Top Contributor
das problem ist wohl, dass es nicht eine statische website ist, sondern dynamisch aus vielen teilen zusammengesetzt wird. du müsstest praktisch jedem "link" folgen, dir die inhalte holen und wieder zusammenbauen, also mehrere anfragen abschicken, so wie dein browser es auch tut.

nebenbei, zeilen 29 und 51 finde ich merkwürdig. 29 ist sinnlos, und warum löscht du die datei in 51 wieder?
 

musiKk

Top Contributor
In diesem Fall ist es wie so oft: Der User-Agent fehlt. Und wie ebenfalls oft reicht ein einfaches
Java:
URLConnection urlc = url.openConnection();
urlc.addRequestProperty("User-Agent", "firefox");
InputStream is = urlc.getInputStream()

das problem ist wohl, dass es nicht eine statische website ist, sondern dynamisch aus vielen teilen zusammengesetzt wird. du müsstest praktisch jedem "link" folgen, dir die inhalte holen und wieder zusammenbauen, also mehrere anfragen abschicken, so wie dein browser es auch tut.
Äh, ne. Dynamisch erzeugte Seiten werden auf dem Server zusammengebaut. Der Seitenquelltext ist in einem Stück. Mehrere Anfragen braucht man nur, um z. B. Bilder oder Skripte zu laden.

und warum löscht du die datei in 51 wieder?
[c]deleteOnExit()[/c] sagt nur, dass die Datei beim Beenden der JVM gelöscht werden soll, nicht sofort.
 

Atze

Top Contributor
Äh, ne. Dynamisch erzeugte Seiten werden auf dem Server zusammengebaut. Der Seitenquelltext ist in einem Stück. Mehrere Anfragen braucht man nur, um z. B. Bilder oder Skripte zu laden.
davon red ich doch :) da die meisten seite aber zZ nur aus flash und bildergemetzel bestehen, sind es meist mehrere anfragen
[c]deleteOnExit()[/c] sagt nur, dass die Datei beim Beenden der JVM gelöscht werden soll, nicht sofort.

stimmt :)
 

s_poggie

Mitglied
Hi musiKk

deine Lösung hört sich ganz Plausibel an...die werde ich gleich mal ausprobieren.
Ich habe mir den Code nicht nochmal angeschaut... war froh als es lief. das gesamte prog setzt sich aus vielen kleinen Baustellen zusammen und es kommt überhaupt nicht auf Performance an. Daher ist mir das egal ob da noch nen paar Codereste von irgendwelchen Tests drin sind die nicht sein müssen.

Vielen Dank für die vielen Antworten.

PS: Wenn ihr nen bisschen weiter denkt wisst ihr ja vielleicht was ich mit den Daten von MTV vor habe.
Funktioniert echt super.... mein Prog erstellt zum schluss eine Datei in der die dazugehörigen Youtube links drin stehen....eigentlich echt nützlich.

Grüße
Sascha
 

ts.tsogoo

Mitglied
Hi Leute, ich habe ein Problemm. Ich hatte ein code geschrieben, der eine Websiteninhalt ausliesst und weiterbenutzt. Es lief bis sie meine IP Adresse blockiert haben.

Java:
			URL url = new URL("http://www.beispielSite.de");
			URLConnection con = url.openConnection();
			con.setRequestProperty("User-Agent",
					"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)");
			br = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF8"));
...
Wie kann ich dieses Problemm lösen. Kann ich bei setRequestProperty bestimmte IP adresse angeben?
 

ARadauer

Top Contributor
Äh, ne. Dynamisch erzeugte Seiten werden auf dem Server zusammengebaut. Der Seitenquelltext ist in einem Stück. Mehrere Anfragen braucht man nur, um z. B. Bilder oder Skripte zu laden.
ichi sags mal trendy: Auf das kann man sich seit WEB 2.0 Zeiten auch nicht mehr verlassen ;-) Im Grunde kann alles über JavaScript und Ajax nachgeladen und verändert werden. Ich baue einige meiner Seiten am Client zusammen...
 
T

tuxedo

Gast
@ts.tsogoo

Hast du ne statische IP? Die meisten DSL Nutzer bekommen nach 24h ne neue IP, bedingt durch die Zwangstrennung.

Wenn du keine statische IP hast, dann kann die die IP-Adressblockade ja egal sein.
Falls doch: Tja, IP ändern. Da hilft es nix im Request Daten zu manipulieren. Der Firewall ist das so ziemlich egal.

- Alex
 

ts.tsogoo

Mitglied
@ts.tsogoo

Hast du ne statische IP? Die meisten DSL Nutzer bekommen nach 24h ne neue IP, bedingt durch die Zwangstrennung.

Wenn du keine statische IP hast, dann kann die die IP-Adressblockade ja egal sein.
Falls doch: Tja, IP ändern. Da hilft es nix im Request Daten zu manipulieren. Der Firewall ist das so ziemlich egal.

- Alex

Es ist eine root server mit ein feste IP.
 
T

tuxedo

Gast
Tja, dann hast du ein Problem.

Wenn du deren Webseite zu sehr stresst, kann man deren Reaktion natürlich verstehen.

Was willst du denn von der Webseite lesen, und vor allem: In welchen Abständen?

- Alex
 
T

tuxedo

Gast
Das was ist weniger wichtig als das "wie oft" ...Das hast du komplett außen vor gelassen ...

Wieviel Requests machst du denn da Pro Minute oder Sekunde?

- Alex
 

ts.tsogoo

Mitglied
Das was ist weniger wichtig als das "wie oft" ...Das hast du komplett außen vor gelassen ...

Wieviel Requests machst du denn da Pro Minute oder Sekunde?

- Alex

Naja es ist bisschen kompliziertes als es scheint. Es ist Website von einer staatlicher bank, derren administrator mein damalige Freund (jetzt gegner) ist. Der weiss was das für mein Programm bedeutet.
Ich mache eigentlich nur 60 request am tag.
 

Atze

Top Contributor
wahrscheinlich bist du der einzige, der da so oft drauf ist, vielleicht sogar der einzige überhaupt! :D dann weiß er wohl immer wer du bist, auch wenn du mit ner neuen ip requestest. also wenn du sein "gegner" bist (was auch immer das heißen mag oO), dann hat er wohl seine gründe dich dort auszusperren. musst du seine seite denn nutzen? gibt es keine alternativen? hört sich nach ner moralisch nicht ganz korrekten sache an, die du da vor hast! kampf um die neusten wechselkurse? :D
 

ts.tsogoo

Mitglied
Was ich vorhabe ist egal. Die Sache is nur, ob man die IP Adress von ein windows server 2008 bei java app aendern kann. Wenn man duch rooter die IP adresse neu kriegen kann, dann musste man das ohne rooten koennen. Denke ich. Geht nicht gibt es nicht oder? Ich dachte diese Thema ist nicht new. Gibt es keine Trick?
 
T

tuxedo

Gast
Nicht denken. Wissen!

Proxy oder andere Webseite. Ne andere Wahl hast du bei einer statischen IP nicht.

- Alex
 

ts.tsogoo

Mitglied
Nicht denken. Wissen!

Proxy oder andere Webseite. Ne andere Wahl hast du bei einer statischen IP nicht.

- Alex

Danke Alex. Proxy. Es ist schon mal was. Ich hatte
Java:
//		System.getProperties().setProperty("http.proxySet", "true");
//		System.getProperties().setProperty("http.proxyHost",
//				"www-9j.dienste.mywebsite.de");
//		System.getProperties().setProperty("http.proxyPort", "8080");

so was schon mal bei meiner Arbeit's PC benutzt. Die frage ist, wie soll ich das auf meinen Root server?
 
T

tuxedo

Gast
Du weißt aber schon was ein Proxy ist und wie er funktioniert?

Dein Root-Server kann wie jeder andere Rechner/PC http-Verbindungen über einen Proxy aufbauen. Alles was du brauchst ist eine Anwendung der man Proxy-Einstellungen verpassen kann (was bei einer Java-Anwendung r- die die Http-/Url-Klassen nutzt - über die "http.xyz" System-Properties kein Problem sein sollte), und natürlich einen Proxy der a) public ist und b) der von deinem Root-Server aus erreichbar ist.

Viel mehr kann ich dazu nicht sagen. Ist eigentlich ziemlich trivial... Ansonsten: :rtfm: rtfm ...
 

ts.tsogoo

Mitglied
Du weißt aber schon was ein Proxy ist und wie er funktioniert?

Dein Root-Server kann wie jeder andere Rechner/PC http-Verbindungen über einen Proxy aufbauen. Alles was du brauchst ist eine Anwendung der man Proxy-Einstellungen verpassen kann (was bei einer Java-Anwendung r- die die Http-/Url-Klassen nutzt - über die "http.xyz" System-Properties kein Problem sein sollte), und natürlich einen Proxy der a) public ist und b) der von deinem Root-Server aus erreichbar ist.

Viel mehr kann ich dazu nicht sagen. Ist eigentlich ziemlich trivial... Ansonsten: :rtfm: rtfm ...

danke dir,
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Quelltaxt einer Website auslesen funktioniert nicht Netzwerkprogrammierung 2
G Kryptische Zeichen beim Auslesen einer Website Netzwerkprogrammierung 11
T Quelltext einer Website auslesen Netzwerkprogrammierung 3
L Logingeschützte Website mit mehreren Accs auslesen Netzwerkprogrammierung 3
mor16Euro Realetime Website Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
T HTTP JSoup Automatic Website Login Netzwerkprogrammierung 1
MaxG. Website in Swing öffnen Netzwerkprogrammierung 4
C Spezielle Daten aus Website entnehmen Netzwerkprogrammierung 5
S Website Überwachung Netzwerkprogrammierung 12
C Gerenderte Website nach der ausführung von JavaScript als HTML Code aus lesen Netzwerkprogrammierung 4
KingSquizzi3 Website parsen mit Hilfe von jsoup funktioniert nicht Netzwerkprogrammierung 3
F Website parsen, die mit javascript zusammengebaut wird Netzwerkprogrammierung 1
D Zugriff auf Webinhalte ohne visuelles Öffnen der Website Netzwerkprogrammierung 2
F HTTP Website parsen Fehler 403 Netzwerkprogrammierung 2
J Website-Zugriff beenden Netzwerkprogrammierung 11
I Website darstellen Java Netzwerkprogrammierung 3
D .txt meiner Website editieren Netzwerkprogrammierung 9
G Txt datei von Website downloaden Netzwerkprogrammierung 8
C Content aus Website ziehen Netzwerkprogrammierung 4
V Angezeigten Text einer Website erfragen Netzwerkprogrammierung 4
P HttpClient - Daten einer Website "unvollständig" Netzwerkprogrammierung 5
H Socket Mit Applet Verbindung zu eigener Website aufbauen Netzwerkprogrammierung 4
N Login auf Website Netzwerkprogrammierung 11
B Website Netzwerkprogrammierung 6
S CRC32 check von website Netzwerkprogrammierung 3
O Per POST automatisch auf Website einloggen... Netzwerkprogrammierung 9
M Html Auslesen Netzwerkprogrammierung 6
x46 byte[] über BufferedReader auslesen Netzwerkprogrammierung 18
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
J WLAN-Signalstärke in dbm auslesen Netzwerkprogrammierung 1
C IFrame mit java auslesen Netzwerkprogrammierung 1
DeathsGun Zeile von Streamcloud auslesen Netzwerkprogrammierung 1
Z HTTP HTML Element auslesen in Java Netzwerkprogrammierung 1
D Webseite(mit JavaScript-Element) mit Java auslesen Netzwerkprogrammierung 0
J Webformular auslesen Netzwerkprogrammierung 2
D Einfache Verbindung zu Linux Server und Datei auslesen Netzwerkprogrammierung 13
B XMLRPC-Schnittstelle. Einzelne Felder aus dem Object auslesen Netzwerkprogrammierung 2
F Daten aus Internetseiten auslesen Netzwerkprogrammierung 56
precoc IP Auslesen Netzwerkprogrammierung 4
S HTML mit AJAX auslesen Netzwerkprogrammierung 2
S HTTP Pakete Auslesen Netzwerkprogrammierung 22
B Authentifikation und anschliesendes auslesen von JSON Netzwerkprogrammierung 2
M lokale Benutzer auslesen Netzwerkprogrammierung 28
H Verzeichnis auf Server auslesen Netzwerkprogrammierung 13
S Bluetooth -Gerätename -Geräteadresse auslesen Netzwerkprogrammierung 4
M Proxy Einstellungen auslesen Netzwerkprogrammierung 2
B FTP Datei auslesen ohne einloggen möglich? Netzwerkprogrammierung 19
Geese HTML Quelltext auslesen ergibt -null- Netzwerkprogrammierung 2
A HTTP Binärdaten über PHP-Skript in Datenbank schreiben bzw auslesen Netzwerkprogrammierung 2
N Systemeinstellung Proxyserver auslesen Netzwerkprogrammierung 2
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6
M IP-Auslesen und ändern Netzwerkprogrammierung 25
B Globale IP-Adresse auslesen - Java Applet Netzwerkprogrammierung 2
S Port auf einer bestimmten IP-Adresse auslesen? Netzwerkprogrammierung 6
L Body eines http Request auslesen Netzwerkprogrammierung 2
P URL Parameter auslesen Netzwerkprogrammierung 5
S Subnetzaddresse auslesen Netzwerkprogrammierung 34
S redirected html auslesen Netzwerkprogrammierung 10
F Timestamp aus IP-Header auslesen Netzwerkprogrammierung 2
L Größe einer Datei auslesen die im Netz liegt Netzwerkprogrammierung 4
S Mehrere Attachments mit JavaMail API auslesen Netzwerkprogrammierung 3
A SSL Zertifikat - modulus auslesen und vergleichen Netzwerkprogrammierung 1
F URL geordnet auslesen Netzwerkprogrammierung 3
E ordnerberechtigungen auslesen Netzwerkprogrammierung 2
P Textdateien aus Oracle-DB mittels Java auslesen und öffnen Netzwerkprogrammierung 7
G push clientseitig auslesen Netzwerkprogrammierung 5
D Daten, die mit PHP erzeugt werden, mit Java auslesen Netzwerkprogrammierung 8
C PCAP Datei auslesen Netzwerkprogrammierung 8
M Rechner einer Domäne auslesen? Netzwerkprogrammierung 3
J Active Directory mit Java auslesen Netzwerkprogrammierung 1
M Öffentliche IP auslesen Netzwerkprogrammierung 13
S Verzeichnis auslesen (FTP Jakarta Commons Net) Netzwerkprogrammierung 2
L netzwerkkarte traffic auslesen Netzwerkprogrammierung 15
C JSP Parameter auslesen Netzwerkprogrammierung 1
J Zeilenweises auslesen aus einer Datei über Server Netzwerkprogrammierung 6
J Client/Server vorhandene Textdatei auslesen Netzwerkprogrammierung 14
C IP adresse anhand einer domain adresse auslesen / ermitteln Netzwerkprogrammierung 3
D SOAP Message abfangen und auslesen Netzwerkprogrammierung 3
G IP auslesen, ändern Netzwerkprogrammierung 8
F IP-Adresse auslesen Netzwerkprogrammierung 7
N TCP Stream auslesen Netzwerkprogrammierung 7
A HTML code auslesen klappt nicht ganz Netzwerkprogrammierung 3
D Bekomme Dummyspace beim Internetseiten auslesen Netzwerkprogrammierung 2
B Netzwerktraffic auslesen Netzwerkprogrammierung 7
D Byte-Zähler des Netzwerkinterface auslesen Netzwerkprogrammierung 2
L Web-Seiten Inhalt auslesen und in textfile speichern Netzwerkprogrammierung 2
D txt Datei auslesen mittels URL Netzwerkprogrammierung 7
G binärwert aus 2 byte auslesen Netzwerkprogrammierung 7
G Verzeichnis eines Rechners übers Netzwerk auslesen Netzwerkprogrammierung 5
K SMB User auslesen Netzwerkprogrammierung 3
B Workgroup namen auslesen Netzwerkprogrammierung 4
J dynamische Router-IP auslesen Netzwerkprogrammierung 6
M IP Adressen auslesen und in Windows/Linux übergeben Netzwerkprogrammierung 5
G Ips auslesen Netzwerkprogrammierung 2
O [IRC] Userliste und Server Messages auslesen und anzeigen Netzwerkprogrammierung 4
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9
C Quelltext Webseite schlägt noch immer fehl Netzwerkprogrammierung 30
Thallius HTTP HTTPS unter Java 1.6 schlägt fehl Netzwerkprogrammierung 4
G HTTP URL öffnen schlägt fehl Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben