Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Einfach mal das Kapitel durchlesen, ist eh nicht sonderlich lang. Daneben gibt es auch noch eine Menge Bibliotheken, die das Leben etwas angenehmer gestalten als die Standard-Bibios. Aber damit kann man sich dann ggf. noch später beschäftigen!
Ich habe mir das ganze mal durchgelesen... ist schon informativ und aufschlussreich ... aber ich würde ja eine Methode benötigen z.b getactWetter() oder so etwas wie kann ich mir solche befehle zusammenbasteln?
Ich benötige doch die passenden "Datenanschlüsse", wie bekomme ich die?
Von einer URL kann man sich einen InputStream holen, da dann das HTML rauslesen (z.B. mit dem Jericho HTML Parser ), und aus den Tags dann die gewünschten Informationen. Du musst ggf. spezifischere Fragen stellen.
Wie Marco bereits sagte ist es am sinnigsten, ein entsprechendes Tool für die Zerlegung von HTML-Seiten zun nutzen. Ich nutze dafür org.lobobrowser.html.* - möglich dass mittlerweile es besseres dafür gibt.
Ich habe vor 4 Jahren ein kleines Servlet geschrieben, was eine beliebige Webseite lädt und alle Links durch valide Mailadressen ersetzt (eine Poison-Page für meine Spamtraps). Den nur spärlich dokumentierten, aber übersichtlichen Source kann ich Dir gerne per PM schicken.
Am besten für solche speziellen Datenabfragen immer nach verfügbaren APIs umsehen, wenn es welche gibt. Google ging wohl mal, aber das gibt es nicht mehr.
java stellt dir mit [japi]URL[/japi] schon mal eine sehr bequeme möglichkeit an die daten zu kommen ...
mit URL.openConnection() holst du dir eine [japi]URLConnection[/japi] ... und davon mit getInputStream() einen [japi]InputStream()[/japi] ...
natürlich hast du so erstmal nur die RAW-daten ... am besten bei HTML also n Reader drüber legen und mit Strings weiter arbeiten ...
nun geht es ans HTML-parsing ...
das problem : viele halten sich nicht an standards ... weshalb es auch keine universellen parser gibt ...
HTML-parsing ist noch in so fern einfach da es festgelegte "TAGs" gibt ... die immer mit "<" anfangen und immer mit ">" enden ...
nun gibt es entweder single-tags ... also solche wie z.b. "img" die in sich komplett sind : "<img src="..." />" und sog. tag-pairs ... also tags die zwei elemente haben : "<h1>text</h1>" ...
welche tags zu welcher sorte gehören kann man beim W3C nachlesen ...
am einfachsten geht sowas dann mit RegEx zum zerlegen und auslesen ... aber man kann sich sowas auch mit String.substring() selbst basteln ...
es gibt auch komplette frameworks die sowas bereitstellen ... bekannt z.b. HTMLUnit ...
trotzdem muss man auch mit diesen frameworks umgehen können um die richtigen informationen rauszubekommen ...
man kanns auch ganz einfach machen in dem man z.b. mit nem BufferedReader zeile für zeile durch geht und entsprechende daten raussucht und in variablen speichert ... das ist dann aber sehr seiten-speziell und kann bei änderungen schnell zu fehlern führen ...
Man muss also einfach nur danach suchen. Alles andere ist aber weit schwerer, da die Seite nicht zum automatischen parsen gedacht ist.
Yahoo bietet übrigens eine XML api an. Das lässt sich dann deutlich einfacher parsen.
Daten für Berlin: Yahoo! Weather - Berlin, DE
Du kannst übrigens auch auf Scala umsteigen. Da ist ein einfacher XML Parser schon eigebaut.
Da sieht der code dann so aus
Java:
import scala.xml._
val xml = XML.load("http://weather.yahooapis.com/forecastrss?w=638242&u=c")
val city = xml \\ "location" \\ "@city"
val temperature = xml \\ "condition" \\ "@temp"
println(city + " " + temperature)
ich komme mir doof vor ihr sagt mir wie man es macht und ich blick nicht wie das gehen soll weil ich die Fachbegriffe und Methoden nicht kenne , z.B Regex
oder wie man das String zeug mit einbringt -.-
tja ... dann dürfte die aufgabe für dich wohl schwerer werden ... denn vieles sind grundlagen ... und das bisschen net-code was die daten liefert hat man auch schnell drauf ...
gut ... auch wenn RegEx nicht jedem liegen ... bietet die API-doc doch ein recht umfassendes nachschlagewerk dazu an
Ich kann nur selbst Sachen programmieren ... alles was Information von Internet oder System braucht kann ich nicht ... ich kann nichtmal die Uhrzeit vom Computer abfragen ^^
Wie meinst du das? ließ die Seite einfach mal aus und schau dir den Quelltext and... dann such mit indexOf die entsprechenden Stellen und schneid dir die Werte substring raus..
Mach dich doch erstmal mit den Grundlagen der SPrache vertraut.
Fang lieber mit dem Klassiker an:
Deinen Namen als Pyramide und Dreieck darzustellen
Code:
M
M A
M A R
M A R C
Oder einfacher
M
MA
MAR
MARC
MARCI
MARCIN
...
Oder Wörterzählen in einem Text. Oder Wörter und SÄtze zählen, Buchstaben..
Dann kannst du dir das Konzept der Streams anschauen und festellen, dass deine Lösungen behalten kannst und dann so nen InetStream hinknallst und er zählt wörter von der Homepage (Vielmehr vom HTML Quellcode)
Die Grundlagen habe ich habe schon TicTacToe und Schach programmiert ...
da habe ich aber nur das Zeug für gebraucht was mir mein Informatik Lehrer beigebracht hat
Das ganze ist nicht für die Schule, das ist für mich weil ich das lernen will.... so nebenbei ^^
Aber irgendwie weiß ich nicht wo ich jetzt als erstes anfangen soll mir Sachen durchzulesen
in meinem 1400 Seiten dicken Buch steht sowas natürlich garnet drin -.-
Ich hab auch mal einen Chat probiert, woran ich auch gescheitert bin
Ich hab mir das ganze um einiges leichter vorgestellt :autsch:
Also ein Echo-Server ... hatte ich , der chat Funktioniert auf meinem Pc wenn ich Server und Client öffne mit LocalHost.... aber von einem anderen PC aus nicht ich weiß nicht ob ich die falsche IP hab oder ob der Port nicht offen ist oder ob die Firewall dazischen funkt ... auf jedenfall ensteht keine Verbindung
naja ... mit dem bisschen schul-info und nem (hoffentlich) halbwegs vernünftigen einsteiger-grundlagen buch wirst du noch nicht all zu weit kommen ..
zum thema regex : einfach mal in die API gucken ... [japi]Pattern[/japi] im package java.util.regex ... da wird eigentlich alles erklärt ...
was du grundsätzlich brauchst haben wir genannt : URL (aus bequemlichkeit ... könnte man durch aus anders machen) und ein bisschen basis-wissen wie man mit strings umgeht ...
ich denke mal keiner wird dir hier grundlagen vorkauen ... schon garnicht wie man mit Strings umgeht und was diese klasse alles an methoden hat ... dafür gibts ne api-doc : [japi]String[/japi] ... ein bisschen fach-englisch vorrausgesetzt ...
auch vielen stichworte wie "zeilen weise lesen" ... wenn man dazu hier die sufu nutzt findet man schon mal so einiges um überhaupt an die daten der seite ranzukommen ...
dann noch ein paar grundlagen zu collections ... und dann sollte es das eigentlich sein ...
mal ganz schnell aus dem kopf hier direkt geschrieben würde folgendes raus kommen
Java:
import java.io.*;
import java.net.*;
import java.util.*;
public class WeatherReader
{
public static void main(String[] args) throws Exception
{
URL url=new URL("http://www.example.tld/file"); // hier URL einsetzen
BufferedReader in=new BufferedReader(new InputStreamReader(url.openStream()));
List<String> list=new ArrayList<String>();
String line="";
while((line=in.readLine())!=null)
{
list.add(line);
}
in.close();
// weitere variablen
for(String string : list)
{
// hier verarbeitung der einzelnen zeilen
}
// restlicher kram wie ausgabe
}
}
in zeile 17 würden dann noch die paar variablen kommen die du vielleicht nutzen willst ... um dann in zeile 22 vllt noch was mit zu machen ...
wenns nur um das ausgeben geht kannst du das auch direkt in zeile 20 machen ... vllt mit RegEx drüber gehen um nur das gewünschte zu erhalten und auszugeben ...
aber das ist es im großen und ganzen ...
und das alles besteht nur aus n bissl basics ... n bissl net-code ... n bissl collections ... n bissl regex ... und n bissl logik ... das ist keine mammut-aufgabe ... sondern lediglich informationen holen und auswerten ...
das mit den Strings habe ich eben verstanden und wollte sagen das ich es so machen werde wie du, schau nochmal rein und alles steht hier
Danke ^^
nur doof das man mit dem Buffered Reader nicht gleich in Zeile xy anfangen kann ^^ aber egal passt schon , ich such mir dann den passenden kram raus
ähm... xD ich hab Jericho runtergeladen... wo muss ich des reinpacken das es funktioniert
und Danke für das Weihnachtsgeschenk
Frohe Weihnachten so nebenher
cool geht
kann es sein das im seitenquelltext sachen drinstehen die nicht auf der seite gezeigt werden?
und umgekehrt ?
Das Programm sagt 20% Regenrisiko .. das regenrisiko finde ich auf der ganzen seite nicht
und im code findet man auch max und min temperatur was ich auch nicht auf der normalen seite finde
... die aktuelle temperatur finde ich aber auch nicht im code, aber irgendwo muss er ja stehen
Du hast doch selbst gesagt, das das Regenrisiko aus der Seite gelesen werden soll. Und das steht da auch, in der Spalte "Nachts", unten, über "Ihre detaillierte Vorhersage für heute".
xD das sollte das Beispiel dienen, genauso wie das Wetter ich will ja allgemein wissen wie man sowas macht
da hab ich mich wohl schlecht ausgedrückt sorry ..
grundsätzlich unterscheidet es sich nicht von wo die daten kommen ...
fakt ist : am ende ist alles eine folge aus 0 und 1 ... und wie diese zu verstehen sind und was genau man dann in diesem wirr-warr sucht und haben will ... darum muss man sich eben selbst kümmern ...
es gibt formate für die es frameworks gibt die einem die suche nach der gewünschten information erleichtern ... und andere für die man halt selbst was schreiben muss ...
Das hat nichts mit Jaricho zu tun. Auf der Seite, die man runterlädt, sind irgendwelche verschachtelten HTML-Tags, <dd> oder <span> oder <div> ... und man kann nur versuchen, sich zu der Stelle zu hangeln, wo das steht, was man sucht ... :bahnhof:
ok
aber die Methoden und so sind von Jericho
gibt es da ne Liste was man damit alles machen kann, bzw was jede Methode macht oder muss ich das selbst rausfinden... google hat nix ausgespuckt... außer ich war mal wieder zu doof dafür ^^
Wenn du Firefox verwendest, kann dir das Firebug Plugin(in Firebug auf HTML klicken) weiter helfen, bzw. bei Chrome die Entwicklertools (auf "Elements" klicken").
Dort wird dir die Struktur des Quellcodes angezeigt, und wenn du mit der Maus auf HTML Elemente zeigst, werden diese auf der Seite hervorgehoben. Damit kannst du bestimmte Dinge im Code sehr schnell finden.
Die Stelle mit der Temperatur sieht übrigens so aus.
Die Doku ist auf Jericho HTML Parser 3.3 , und SEHR ausführlich - aber gebraucht habe ich sie praktisch noch nie. Wenn
source.getAllElements(HTMLElementName.DD);
nicht alle '<dd>'-Elemente liefern würde, hätte der Entwickler was falsch gemacht (und dann würde ich die Lib nicht empfehlen)
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.
Ich habe da ein Problem
Die Seite die ich auslesen möchte bekommt man erst, wenn man sich eingeloggt hat ... ich habe meinem Programm jetzt die Seite
nach dem Log In gegeben, er liest aber automatisch die logIn seite aus ....