Python 仅使用beautiful soup从google中刮取src属性

Python 仅使用beautiful soup从google中刮取src属性,python,web-scraping,beautifulsoup,google-image-search,Python,Web Scraping,Beautifulsoup,Google Image Search,我正在努力抓取谷歌图片。beautiful soup提取“src”,并输出链接 数据:图像/gif;base64,R0LGodlhaqabaaap/////YH5baekaaeaaaaaaaaaaaaaicaaow== 这不是真实的图像。 脚本标记看起来编码很重,不包含实际的URI。 有人能给我一个解决办法吗 实际上,这是一个缩小的数据URI,解码后生成1x1图像。我的问题是谷歌如何缩小完整的数据URI,我们如何访问完整的URI以便获得实际图像?这是数据URL,请参考 您可以解码base64字符

我正在努力抓取谷歌图片。beautiful soup提取“src”,并输出链接 数据:图像/gif;base64,R0LGodlhaqabaaap/////YH5baekaaeaaaaaaaaaaaaaicaaow== 这不是真实的图像。 脚本标记看起来编码很重,不包含实际的URI。 有人能给我一个解决办法吗


实际上,这是一个缩小的数据URI,解码后生成1x1图像。我的问题是谷歌如何缩小完整的数据URI,我们如何访问完整的URI以便获得实际图像?

这是数据URL,请参考


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

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

src = "BASE64 DATA"
img = open("MyImage.gif","wb+")
img.write(src.decode('base64'))
img.close()

谷歌图像是从(谢天谢地)内联JavaScript插入DOM的。为任何查询打开搜索结果的页面源,复制image
src
属性,然后在页面源中找到它

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

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

使用
curl
的示例

curl-s'https://serpapi.com/search?q=coffee&tbm=isch'
上的
google搜索结果
Python包的示例用法

从serpapi导入谷歌搜索
导入操作系统
参数={
“引擎”:“谷歌”,
“q”:“咖啡”,
“tbm”:“isch”,
“api_键”:os.getenv(“api_键”)
}
客户端=谷歌搜索(参数)
data=client.get_dict()
打印(“图像结果”)
对于数据中的结果['images_results']:
打印(f)
位置:{result['Position']}
原始图像:{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
检查文档中是否有错误


免责声明:我在SerpApi工作。

实际上,这是一个缩小的数据URI,解码后会生成1x1图像。我的问题是谷歌如何缩小完整的数据URI,我们如何访问完整的URI,以便获得实际的图像?