首页 > 解决方案 > 使用 BeautifulSoup 从 Google 购物标签下载图片

问题描述

我想使用 BeautifulSoup 从Google 购物标签下载图片。但是,<img>此页面中的元素包含src具有以下格式的属性。

data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

<img>并且整个页面中的每个元素都具有相同的src属性值。

这与存在正确图像 URL 的Google 图片不同。

我怎样才能下载这些图像?另一种方法是打开这些购物网站 URL 并下载图片,但这并不能保证我会下载相同的图片。

标签: pythonbeautifulsoup

解决方案


您看到的是base64图像编码,这是在网络上传输图像的标准方式(在此处阅读更多信息)。

前缀后面的字符data:image/gif;base64,实际上是图像本身,它只需要解码。试试下面的代码,看看它是否成功解码图像。

import base64

# assume `src` is the scraped src from the <img> tag

img_encoded = src.split(',')[1]             # extract the encoding
img_decoded = base64.b64decode(img_encoded) # decode
with open('file.gif', 'wb') as f:         
    f.write(img_decoded)                    # write the file as a .gif

尝试打开file.gif并检查图像是否已成功解码。


推荐阅读