Ich habe eine Website, von der ich Daten analysieren muss. Ich brauche eine Suche nach Keyword-Ergebnissen. Allerdings sind nicht alle Felder in der Vorschau der Produkte sichtbar. Es scheint, dass diese Felder (Produktfarbe, Beschreibung, alte Preise) nur von jeder Produktseite abgekratzt werden können. Die URL einer Produktseite sieht folgendermaßen aus: https://www.aboutyou.de/p/new-look/basecap-in-satin-optik-3649077 SI weiß nicht, wie man es generisch nennt, also müsste ich nicht jedes Produkt durchlaufen. Ich kann den Namen und die Marke des Projekts herausfinden, aber ich weiß nicht, wie ich die URL erstellen soll - setze alle Buchstaben auf Großbuchstaben und setze Bindestriche zwischen die Wörter? Markennamen und Produktname kann ich so bekommen: NEW LOOK Basecap in Satin-Optik.Verbinden mit Produktseiten URLs Jsoup
Also, wie kann ich die URL für jedes Produkt definieren?
Hier ist der Code, den ich bisher habe:
String url = "https://www.aboutyou.de/frauen/accessoires/huete-und-muetzen/caps";
Document doc = Jsoup.connect(url).get();
System.out.println("Title: " + doc.title());
String mainPath = "section.layout_11glwo1-o_O-stretchLayout_1jug6qr > " +
"div.content_1jug6qr > " +
"div.container > " +
"div.mainContent_10ejhcu > " +
"div.productStream_6k751k > " +
"div > " +
"div.wrapper_8yay2a > " +
"div.col-sm-6.col-md-4 > " +
"div.wrapper_1eu800j > " +
"div > " +
"div.categoryTileWrapper_e296pg";
String searchPath = mainPath + " > a.anchor_wgmchy > " +
"div.details_197iil9 > " +
"div.meta_1ihynio";
String linksPath = mainPath + " > a.anchor_wgmchy";
String brandPath = mainPath + " > a.anchor_wgmchy > " +
"div.details_197iil9 > " +
"div.meta_1ihynio > " +
"div.description_ya0ltb > " +
"strong.brand_ke66rm";
Elements result = doc.body().select("main#app");
for(Element element : result) {
Elements products = element.select(searchPath);
Elements links = element.select(linksPath);
Elements brands = element.select(brandPath);
for(Element product : products){
System.out.println(product.text());
}
String[] linksText = null;
for(Element link : links){
String linkHref = link.attr("href");
String linkText = link.text();
linksText = linkHref.split("[\\-]");
String id = linksText[linksText.length-1];
System.out.println("id: " + id);
System.out.print("link attr:" + linkHref + ", ");
}
System.out.print("\nbrands" + brands.text());
}
Vielleicht gibt es einige Bibliotheken für das? Ich wäre dankbar für jeden Rat!
Aber ich brauche auch eine Produktfarbe sowie Beschreibung. Ich erwähnte es in der Frage – Cassie
@Cassie dann wird tatsächlich eine Unterabfrage benötigt, siehe aktualisierten Code. –
@Cassie ist das gelöst? Dann akzeptiere bitte die Antwort oder poste einen Kommentar. –