Я начинаю изучать Jsoup и хочу отказаться от интернет-магазина Tesco. Вот ссылка:
https://www.tesco.com/groceries/en-GB/shop/fresh-food/all
Я хочу получить изображение продукта. Когда я просматриваю код страницы из Google Chrome, я получаю что-то вроде этого:
<img src="https://img.tesco.com/Groceries/pi/321/5054775188321/IDShot_225x225.jpg" alt="Tesco British Unsalted Butter 250G" class="product-image" srcset="https://img.tesco.com/Groceries/pi/321/5054775188321/IDShot_90x90.jpg 768w,https://img.tesco.com/Groceries/pi/321/5054775188321/IDShot_225x225.jpg 4000w">
Но мой код:
Document doc = null; try { doc = Jsoup.connect("https://www.tesco.com/groceries/en-GB/shop/home-and-ents/all?page=20").get(); } catch (IOException e) { e.printStackTrace(); } System.out.println(doc.getElementsByClass("product-image-wrapper").get(0));
приводит к:
<a href="/groceries/en-GB/products/295626079" aria-hidden="true" class="product-image-wrapper" tabindex="-1"> <div class="product-image__container"> <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Sterling Blue Superkings 100 Pack" class="product-image"> </div></a>
Мне кажется, проблема в том, что URL-адреса загружаются JS, а Jsoup не поддерживает его. Есть ли способ получить URL, как я вижу его в chrome, или я должен использовать более мощный инструмент, такой как HtmlUnit или Selenium.
Итак, я просто перешел на селен. Это может быть медленнее, но, по крайней мере, прогресс идет. Я также попробовал HtmlUnit, но, похоже, он плохо работает с JS.