java - Jsoup 抓取图像 url 结果数据为 :image/gif;base64,

标签 java web-scraping jsoup

我开始学习 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 不支持它。有什么方法可以获取我在 chrome 中看到的 URL,或者我应该使用更强大的工具,例如 HtmlUnit 或 Selenium。

最佳答案

所以基本上我刚刚切换到 Selenium 。可能会慢一些,但至少在进步。 我也尝试过 HtmlUnit,但它似乎与 JS 配合不好。

关于java - Jsoup 抓取图像 url 结果数据为 :image/gif;base64,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61548879/

相关文章:

java - hibernate MySQLSyntaxErrorException : Unknown database "..."

python - level必须是整数,elasticsearch报错

java - 使用 jsoup 忽略网址中的垃圾邮件/广告

r - 如何在没有按钮参数的 Rvest 包中提交登录表单

java - Jsoup选择不同的Div类型并依次处理

java - 使用 Jsoup 解析 XML

java - 在 Android 上快速开始使用 opengl

java - 有没有办法通过使用android按下方便键来触发方法?

java - 如何在用户点击的位置画一个三角形

javascript - Web 抓取具有动态 javascript 内容的网站