在爬取图片的src时获取base64字符串

5
我正在从网站上爬取图片的src、标题、价格等信息,但是它们的src属性返回的是base64字符串,而不是图片链接。当我将所有这些爬取到的数据附加到uri中时,会显示出长URI错误。如何解决这个问题?
1个回答

6
如果您在img src中获得了base64字符串,那么看起来这张图片是内联编码的。
data: URI是一种非常有用的方式,可以将小型数据项嵌入到URL中 - 而不是链接到外部资源,URL包含实际编码的数据。

An HTML fragment embedding a picture of small red dot:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
在上面的示例中,如果您解码字符串(减去data:image/png,base64,部分),您将获得PNG图像的数据,您可以将其写入磁盘作为文件。以下是相关链接:

1
有没有办法获取实际链接,而不是这个base64字符串? - chandni
3
没有链接,这就是问题所在。服务器上没有你可以使用URL访问的文件,相反,图像数据是base64编码的字符串。 - Dal Hundal
1
删除类似于data:image/png,base64,的部分,然后使用base64解码函数。在PHP中,它是base64_decode,在Javascript中它是atob - Dal Hundal
谢谢,这非常有帮助。 - chandni
@DalHundal 在我的情况下,有一个URL,我已经复制粘贴到浏览器中,并且可以看到完整大小的图像。然而,BS4和Python3会抓取<img src..>并将其转换为Base64,因此这不是我要找的答案。 - Fandango68
1
当我在浏览器中检查元素时,我肯定看到了一个URL,但是当我使用Scrapy时,它将其转换为base64编码的字符串。烦死了。 - Evan Zamir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接