为了账号安全,请及时绑定邮箱和手机立即绑定

仅使用美丽的汤从谷歌抓取 src 属性

仅使用美丽的汤从谷歌抓取 src 属性

叮当猫咪 2023-12-12 14:43:29
我正在尝试抓取谷歌图像。虽然 beautiful soup 提取“src”,但它输出链接 data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== ,这不是实际图像。脚本标记看起来经过大量编码,并且不包含实际的 URI。有人能给我建议一个解决方案吗?实际上,这是缩小的数据 URI,解码后会生成 1x1 图像。我的问题是谷歌如何缩小完整的数据 URI 以及我们如何访问完整的 URI 以便我们可以获得实际的图像?
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

这就是 Base64 编码的图像。您可以将其保存到图像文件中,例如:


src = "BASE64 DATA"

img = open("MyImage.gif","wb+")

img.write(src.decode('base64'))

img.close()


查看完整回答
反对 回复 2023-12-12
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

这是数据 URL,请参考https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs

您可以解码 Base64 字符串,然后保存到图像文件。


查看完整回答
反对 回复 2023-12-12
?
偶然的你

TA贡献1841条经验 获得超3个赞

Google 图片是从(幸运的是)内联 JavaScript 插入到 DOM 中的。打开任何查询的搜索结果的页面源,复制图像src属性,然后在页面源中找到它。

要仅提取它bs4,您可以模仿浏览器并使用正则表达式从内联 JavaScript 中提取数据。

https://img1.sycdn.imooc.com/6578013b000182cd18900139.jpg

或者,您可以使用 SerpApi 提取完整图像的 URI。这是一款可免费试用的付费 SaaS。


示例用法与curl.


curl -s 'https://serpapi.com/search?q=coffee&tbm=isch'

Repl.itgoogle-search-results上 Python 包的使用示例。


from serpapi import GoogleSearch

import os


params = {

    "engine": "google",

    "q": "coffee",

    "tbm": "isch",

    "api_key": os.getenv("API_KEY")

}


client = GoogleSearch(params)

data = client.get_dict()


print("Images results")


for result in data['images_results']:

    print(f"""

Position: {result['position']}

Original image: {result['original']}

""")

输出示例


Images results


Position: 1

Original image: https://upload.wikimedia.org/wikipedia/commons/4/45/A_small_cup_of_coffee.JPG



Position: 2

Original image: https://media3.s-nbcnews.com/j/newscms/2019_33/2203981/171026-better-coffee-boost-se-329p_67dfb6820f7d3898b5486975903c2e51.fit-1240w.jpg



查看完整回答
反对 回复 2023-12-12
  • 3 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信