Jsoup 抓取图像 url 结果数据:image/gif;base64,
Jsoup scraping image url results in data:image/gif;base64,
我开始学习 Jsoup,想抓取 Tesco 网上商店。这是一个 link:
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 一起使用。
我开始学习 Jsoup,想抓取 Tesco 网上商店。这是一个 link:
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 一起使用。