Ich habe ein Programm das von Websiten den Text einließt, das einzige Problem bei der ganzen Sache ist das Man die Seiten immer wieder neu in die Konsole eingeben muss. Ich will aber das die Internetseiten schon vor eingegeben sind damit damit man die eben nicht immer wieder eintragen muss.
public void Inhalt(InputStream url) {
try {
BufferedReader reader2 = new BufferedReader(new InputStreamReader(url)); //PROBLEM
site_secondRequest = Jsoup.connect(reader2.readLine()).timeout(0).data().get();
Elements tags_secondRequest = site_secondRequest.select("p");
for (int i = 0; i < tags_secondRequest.size(); i++) {
text = text + (tags_secondRequest.get(i).text());
System.out.println(text);
}
} catch (Exception e) {
e.printStackTrace();
}
s = new Scanner(text);
}
Und hier der Code zum einfügen der URL:
Code:
URL url = new URL("http://vertretung.esy.es/first.html");
getURL(url.openStream());
Dann sagt das Programm : "The method getURL(InputStream) is undefined for the type Tabelle1"
URL url = new URL("http://vertretung.esy.es/first.html");
Inhalt(url.openStream());
Dann kommt eine Fehlermeldung (Wenn man es ausführt) :
java.lang.IllegalArgumentException: Malformed URL: <!DOCTYPE HTML>
at org.jsoup.helper.HttpConnection.url(HttpConnection.java:101)
at org.jsoup.helper.HttpConnection.connect(HttpConnection.java:43)
at org.jsoup.Jsoup.connect(Jsoup.java:73)
at Tabelle1.Inhalt(Tabelle1.java:112)
at Tabelle1.start(Tabelle1.java:51)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.MalformedURLException: no protocol: <!DOCTYPE HTML>
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at org.jsoup.helper.HttpConnection.url(HttpConnection.java:99)
... 13 more
Ich weiß nicht was JSoup ist, aber du kannst einfach eine Url öffnen:
Java:
Url url =<deine url>BufferedReader rd =newBufferedReader(newInputstreamReader(url
openStream()));String html ="";String line;while((line = rd.readLine())!=null){
html += line +"\n";}//html sollte jetzt den ganzen Web-Code enthalten.//wie du ihn analysierst ist deine Sache ^^
rd.close()
Ach nochwas: ich hab jetzt den Try-Catch Block nicht mit in dem Code geschrieben,,
den einfach noch einfügen
Deine IDE wird dir schon sagen wo.
Dein Problem ist, dass du JSoup den Inhalt der Seite übergibst, und nicht die URL zu der Seite.
Anstatt selbst die Verbindung zu öffnen und den Inhalt der Seite auszulesen, musst du einfach die URL übergeben, siehe JavaDoc: https://jsoup.org/apidocs/org/jsoup/Jsoup.html#connect-java.lang.String-