Jsoup соскоб URL-адрес изображения приводит к данным: image / gif; base64, - PullRequest
0 голосов
/ 01 мая 2020

Я начинаю изучать 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.

1 Ответ

0 голосов
/ 02 мая 2020

Итак, я просто перешел на селен. Это может быть медленнее, но, по крайней мере, прогресс идет. Я также попробовал HtmlUnit, но, похоже, он плохо работает с JS.

...