#java #jsoup
Вопрос:
У меня проблема с получением src img и тегов a с помощью jsoup в весеннем проекте , вместо этого я получаю «1», «5», «данные:изображение/gif;base64,r0lgodlhaqabaiaaaaaap// / yh5baeaaaaaalaaaaaaaaaaaaaabraa7»
Вот код:
String url1 = "https://www.jumia.ma/pc-portables/";
Document doc1 = Jsoup.connect(url1).get();
//List de noms et prix produits et le src des images :
List<Element> noms1 = doc1.getElementsByClass("name");
List<Element> prix1 = doc1.getElementsByClass("prc");
List<Element> images1 = doc1.select("img");
for(int i = 0 ; i < 10 ; i ) {
if (!noms1.get(i).ownText().isEmpty() amp;amp; !prix1.get(i).ownText().isEmpty()) {
Produit p = new Produit();
p.setNom(noms1.get(i).ownText());
p.setPrix(prix1.get(i).ownText());
p.setImage(images1.get(i).attr("abs:src"));
p.setUrl("https://www.jumia.ma/pc-portables/");
p.setIdcategorie(5);
produitRepository.save(p);
}
}
Ответ №1:
Эти запросы просто слишком широки для вашего варианта использования:
List<Element> noms1 = doc1.getElementsByClass("name");
List<Element> prix1 = doc1.getElementsByClass("prc");
List<Element> images1 = doc1.select("img");
Вы всегда можете распечатать результаты своего запроса и убедиться в этом сами. Например:
List<Element> noms1 = doc1.getElementsByClass("name");
System.out.println(noms1);
Вы должны разделить свой запрос на два этапа. Сначала выберите контейнер со списком элементов, затем обработайте каждый элемент. Попробуйте это:
String url = "https://www.jumia.ma/pc-portables/";
Document doc = Jsoup.connect(url).get();
Element catalog = doc.selectFirst("[data-catalog]");
for (Element item : catalog.select("article")) {
// name
System.out.println(item.select(".info > .name").text());
// price
System.out.println(item.select(".info > .prc").text());
// image
System.out.println(item.selectFirst(".img-c > img").attr("data-src"));
}
Обратите внимание, что при этом анализируются только данные элемента на первой странице. Если вы хотите очистить дополнительные страницы, повторите процесс, используя другой URL-адрес. Например, вот URL-адрес, по которому загружается вторая страница:
https://www.jumia.ma/pc-portables/?page=2#catalog-listing