# Daten aus Website auslesen



## Goldarm5 (14. Jan 2015)

Hi,

es geht um folgendes:

Ich würde gerne ein Programm in Java schreiben, dass Daten von einer Website ausliest und dann zur Weiterverarbeitung ersteinmal zwischenspeichert (Textdokument, Excel , ka.....).
Die Webseite von der ich die Daten gerne auslesen würde ist: Auctions - World of Warcraft Datenbank von buffed.de
Da ich was das angeht noch garkeine Erfahrung habe wollte ich daher erstmal fragen ob das überhaupt geht die Auktionsdaten auszulesen und wäre über Hilfe oder Tipps wo man sich das sonst gut anlernen könnte (Bücher, Websites, Tutorials...).
Schonmal Danke im Vorraus für alle Antworten.

MfG Phillip


----------



## Joose (14. Jan 2015)

Möglich ja, einfach mal nach "java read website" googeln 
Wenn die Seite eine entsprechende API anbietet die man ansprechen kann, wäre das sogar noch einfacher, dazu einfach mal den Betreiber der Seite ansprechen.
Ansonsten sind hier vielleicht noch rechtliche Sachen zu beachten: Darfst du diese Daten so einfach auslesen und weiterverarbeiten?


----------



## Goldarm5 (14. Jan 2015)

Also was das rechtliche angeht, soweit wie ich das durchgelesen habe solange man es nicht gewerblich verwendet. 
Bin mir zwar nicht ganz sicher, aber wenn ich das so google finde ich Lösungen um den "normalen" Text auszulesen, wenn ich das richtig verstanden habe. Was ich auslesen möchte sind die Auktionsdaten, die auf der genannten Website zu finden sind. Und diese stehen ja nicht einfach so auf der Seite, sondern passen sich ja immer den jeweiligen Suchkriterien an die man beim Auktionsfilter angibt.


----------



## Joose (14. Jan 2015)

Goldarm5 hat gesagt.:


> Also was das rechtliche angeht, soweit wie ich das durchgelesen habe solange man es nicht gewerblich verwendet.



War auch nur ein Hinweis 



Goldarm5 hat gesagt.:


> Bin mir zwar nicht ganz sicher, aber wenn ich das so google finde ich Lösungen um den "normalen" Text auszulesen, wenn ich das richtig verstanden habe.



Mit den Beispielen von oben genannter Google Suche sollte es dir möglich sein den HTML Quellcode auszulesen und daraus kannst du dann die Auktionsdaten filtern.



> Was ich auslesen möchte sind die Auktionsdaten, die auf der genannten Website zu finden sind. Und diese stehen ja nicht einfach so auf der Seite, sondern passen sich ja immer den jeweiligen Suchkriterien an die man beim Auktionsfilter angibt.



Alle Daten auf einmal wirst du so nicht bekommen, dafür musst du eben schauen wegen einer API 
Eine kurze Suche nach "world of warcraft auction api" hat folgendes zum Vorschein gebracht: Auction House API - WoWWiki - Your guide to the World of Warcraft (oder http://blizzard.github.io/api-wow-docs/#id3683980)


----------



## Sogomn (14. Jan 2015)

Z.B. mit einer HttpURLConnection. Und dann parsen.


----------



## VictorRomeo (15. Jan 2015)

Oder guck dir mal dies an: HtmlUnit - Welcome to HtmlUnit wurde hier auch schon öfter genannt.



> HtmlUnit is a "GUI-Less browser for Java programs". It models HTML documents and provides an API that allows you to invoke pages, fill out forms, click links, etc... just like you do in your "normal" browser.
> 
> It has fairly good JavaScript support (which is constantly improving) and is able to work even with quite complex AJAX libraries, simulating either Firefox or Internet Explorer depending on the configuration you want to use.
> 
> It is typically used for testing purposes or to retrieve information from web sites.


----------



## Goldarm5 (23. Jan 2015)

Das einlesen klappt nun, danke für die Tipps 
Das sieht im ganzen bei mir dann so aus:
[Java]
public void DataDownload() throws MalformedURLException, IOException {
		String str = "";
		String[] strArray;
		URL url = new URL("http://eu.battle.net/auction-data/4f8a4ab0a2adb574a1c82d64d32c7bf4/auctions.json");
		InputStream in = url.openConnection().getInputStream();
		InputStreamReader isr = new InputStreamReader(in);
		BufferedReader br = new BufferedReader(isr);
		File file = new File("Textdatei/Textdatei.txt");
		FileWriter fw = new FileWriter(file);
		BufferedWriter bw = new BufferedWriter(fw);
		br.readLine();
		br.readLine();
		br.readLine();
		str = br.readLine();
		strArray = str.split("[^0-9]");
		in.close();
	}
[/Java]
Mit str.split("[^0-9]")wollte ich den String aufteilen, so dass nur die Zahlen überbleiben. Wenn ich mir das im Debugger aber angucke, ist das zurückgegebene Array viel zu groß (138 Einträge). Die Zahlen die ich eigentlich haben wollte sind zwar vorhanden, aber zwischen ihnen sind massenweise Einträge mit 0. Hab ich da bei der regular expression was falsch oder woher kommen die?

...Komme leider im Moment nicht so oft dazu was zu machen, da ich nur in der FH Internet hab und da gerade quasi Ferien sind bin ich nicht so oft da.


----------



## Joose (26. Jan 2015)

Du bekommst als Rückgabe wahrscheinlich ein JSON String .... verwende doch einen fertigen JSON Parser und schon hast du die einzelnen Elemente


----------

