Probleme mit Strings

toertchen273

Mitglied
Guten Abend,
ich bin noch recht neu in der Java Programmierung, habe dementsprechend ein Problem, welches ich nicht wirklich beheben kann. Und zwar geht es darum, dass bei einer Methode ein String zurückgegeben wird, der nicht dem ursprünglichen Standard entspricht. Damit ist gemeint, dass ein Teil eines Seitenquelltextes ausgelesen wird und dann als URL weiterverarbeitet werden soll, aber dies nicht passiert, da die ausgelesene URL vom Format nicht gleich der ursprünglichen ist.
Kann man die ausgelesene URL irgendwie konvertieren, dass sie gleich der eingelesenen wird.

Liebe Grüße
Toertchen273
 
Die Beschreibung ist etwas wirr. Ich denke, Du meinst, dass die URI im Seitenquelltext ggf. relativ angegeben ist (z. B. "img/abc.jpg") und Du möchtest die URIs gegen die URL auflösen.

Beispiel:
Java:
import java.net.*;

public class Test {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://localhost");
        URI baseURI = url.toURI();
        URI imgURI = baseURI.resolve("img/abc.jpg");
        System.out.println(imgURI.toURL());

        URI linkURI = baseURI.resolve("http://localhost/xy");
        System.out.println(linkURI.toURL());

    }
}
 
So, danke erstmal für die Antworten und sorry für die etwas undurchdringliche Erläuterung. Ich versuch mal das Problem ganz genau zu beschreiben, kann den Code leider nicht hochladen weil ich gerade in der Uni sitze und nur mein Notebook bei habe. Ich füge ihn heute Abend mal nach.
Ich schreibe ein Programm mit dem ich den Seitenquelltext von Wikipedia nach dem Link zum neusten Beitrag durchsuche und dann mit dieser URL von dem neusten Beitrag nach weiteren Informationen suche. Dazu habe ich zunächst eine Methode geschrieben, bei welcher ich die URL der Wikipedia Hauptseite eingebe und dann anhand dieser die URL des neusten Beitrags suche. Diese wird auch gefunden, nur funktioniert die zweite Methode mit diesem gefundenen Link nicht, obwohl sie im Grunde genommen das Gleiche wie die erste macht. Da es aber funktioniert, wenn ich die gefundene URL selber eingebe, kam mir der Gedanke, dass es an folgendem liegt: Die erste Methode gibt die gefundene URL als String zurück und die zweite kann diesen String nicht richtig als URL verarbeiten trotz new URL(String). Deswegen glaube ich, dass der ausgegeben String vom Format, (da war doch was mit UTF16), nicht gleich dem ersten ist.

Ich hoffe mal dass diese Beschreibung besser hilft.
Liebe Grüße
 
Ich sage immer noch, dass das Problem darin liegt, dass die Links auf der Seite relativ angegeben sind. Aber zeig erst mal den Code.
 
Ich habe es auch noch nicht genau verstanden, aber ich gebe mihe7 recht, relativ angegebene URLs müssen zunächst aufgelöst werden.
 
Ok,
ich habe das ganze gerade nochmal neu geschrieben für eine andere Website, funktioniert aber immer noch nicht. Ich füge den Code an.
Der Code müsste hierbei den Namen des neusten Autos ausgeben, macht es allerdings nicht.
Liebe Grüße

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

public class wikiupdate {
  public static String searchurl() throws IOException {
    URL searchurl = new URL("https://www.autoscout24.de/lst?sort=age&desc=1&adage=1&ustate=N%2CU&size=20&page=1&lon=7.94239&lat=48.46801&zip=77652%20Offenburg&zipr=300&cy=D&priceto=5000&atype=C&");
    InputStream searchin = searchurl.openStream();
    BufferedReader searchreader = new BufferedReader(new InputStreamReader(searchin));
    String z = null;
    String initValue = "<a data-item-name=\"detail-page-link\" href=\"";
    int checkur = 0;
    String searchedURL = "";
    while((z = searchreader.readLine()) != null) {
      if (z.contains(initValue)) {
        if (checkur == 0){
          String Zwischenspeicher = z.substring(initValue.length(),z.length()-2);
          searchedURL = "https://autoscout24.de" + Zwischenspeicher + "?cldtidx=1";
          System.out.println(searchedURL);
          checkur = 1;
        }
        else{}
      }
    }
    return searchedURL;
}
public static void main(String[] args) throws IOException {
  System.out.println(searchurl());
  URL url = new URL(searchurl());
  InputStream in = url.openStream();
  BufferedReader reader = new BufferedReader(new InputStreamReader(in));
  String s = null;
  String valuetosearch = "<as24-tracking type=\"gtm\" action=\"set\" as24-tracking-value=\'{\"classified_makeTxt\": \"";
  String Output = "";
  while((s = reader.readLine()) != null) {
      if (s.contains(valuetosearch)) {
        String possiblestring = s.substring(valuetosearch.length(),s.length()-18);
        Output = possiblestring;
      }
  }
  System.out.println(Output);
}
}
 

Neue Themen


Zurück
Oben