데이터를 파싱해야하는 웹 사이트가 있습니다. 키워드 결과로 검색해야합니다. 그러나 모든 필드가 제품 미리보기에 표시되는 것은 아닙니다. 이 필드 (제품 색상, 설명, 이전 가격)는 각 제품 페이지에서만 스크랩 할 수 있습니다. 제품 페이지의 URL은 다음과 같습니다. https://www.aboutyou.de/p/new-look/basecap-in-satin-optik-3649077 SI는 일반적인 방법으로이를 호출하는 방법을 모르므로 각 제품을 검토하지 않아도됩니다. 프로젝트의 이름과 브랜드를 찾을 수는 있지만 URL을 작성하는 방법을 모릅니다. 모든 문자를 대문자로 설정하고 단어 사이에 대시를 넣으시겠습니까? 새틴 - 옵틱의 NEW LOOK Basecap과 같은 방식으로 브랜드 이름과 제품명을 얻을 수 있습니다.제품 페이지에 연결 urls Jsoup
그래서 각 제품에 대한 URL을 어떻게 정의 할 수 있습니까?
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());
}
어쩌면, 그 몇 가지 라이브러리가 있습니다 : 여기
내가 지금까지 가지고있는 코드는? 나는 어떤 충고에 대해 감사 할 것입니다!
그러나 제품 색상과 설명이 필요합니다. 나는 질문에서 언급했다. – Cassie
@Cassie 실제로 하위 쿼리가 필요하다. 업데이트 된 코드를 참조하라. –
@Cassie가 해결 되었습니까? 그런 다음 답변을 수락하거나 후속 조치 의견을 게시하십시오. –