python - 使用 BeautifulSoup 从 Google 购物标签下载图片
问题描述
我想使用 BeautifulSoup 从Google 购物标签下载图片。但是,<img>
此页面中的元素包含src
具有以下格式的属性。
data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
<img>
并且整个页面中的每个元素都具有相同的src
属性值。
这与存在正确图像 URL 的Google 图片不同。
我怎样才能下载这些图像?另一种方法是打开这些购物网站 URL 并下载图片,但这并不能保证我会下载相同的图片。
解决方案
您看到的是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
并检查图像是否已成功解码。
推荐阅读
- c# - Admob 仅加载测试广告
- symfony - 为什么 Drupal 实体事件不触发?
- javascript - 是否可以对这种数组进行分组?[Javascript]
- javascript - 从对象数组中提取一个属性并用它们构建一个字符串
- r - 使用 GitHub 包 R 操作
- java - Android TCP 服务器消息到桌面 C# 客户端
- python - python multiprocessing - 在进程之间共享巨大的变量
- r - 如何使用正则表达式逐行提取字符串?
- jupyter-notebook - 使用 ipywidgets 水平显示单选按钮
- javascript - 嵌套和元素中的意外空白